如何解决Servlet过滤器中的jsf ajax重定向不起作用
我有一个servlet过滤器,它将在会话期满后执行重定向。
对于非ajax请求,过滤器执行HttpServletResponse.sendRedirect(myUrl)来执行重定向,效果很好。但是,对于ajax类型请求我不能说同样的话。
对于ajax请求,过滤器执行HttpServletResponse.getWriter()。println(partialResponseContent)以执行重定向。没用屏幕保持不变,似乎被冻结并且禁止所有输入字段。关于我可能会缺少的或我能找出问题原因的任何指针?
以下是partialResponseContent:
<?xml version="1.0" encoding="UTF-8"?><partial-response><redirect url="/MyAccount/command?cmd=twoFA&TargetUrl=/MyAccount/viewDevices.jsf"></redirect></partial-response>
我在Chrome的“开发人员工具”屏幕中仔细检查了一下,发现内容已正确发送(请参见附件图像)。
解决方法
为此浪费了两天。但是,我很高兴终于能够正常工作。该问题是由url属性(在redirect元素中)的值未经过xml编码引起的。我的网址包含&字符。需要将其编码为&amp;为重定向工作。注意:我使用org.apache.commons.lang.StringEscapeUtils.escapeXml进行xml编码。
以下是之前的编码:
<?xml version="1.0" encoding="UTF-8"?><partial-response><redirect url="/MyAccount/command?cmd=twoFA&TargetUrl=/MyAccount/viewDevices.jsf"></redirect></partial-response>
以下是编码后的内容
:<?xml version="1.0" encoding="UTF-8"?><partial-response><redirect url="command?cmd=twoFA&TargetUrl=/MyAccount/viewDevices.jsf"></redirect></partial-response>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。