【发布时间】:2014-08-14 16:40:00
【问题描述】:
我的环境:
- Primefaces 4.0 或 Primefaces 5.0
- JDK 1.7
- Jboss7.1.1
- JSF 2.2
- Internet Explorer 9
- J2EE1.6
当从 IE9 提交表单时,IE 将标记的 HTML 文本作为按钮值的一部分从 JSF 页面发送回 JSF servlet。这导致 servlet 容器行为异常,并且没有调用托管 bean 上的方法来进一步处理。这在 Firefox 或 Chrome 浏览器中运行良好。 这是服务器日志中的按钮值:
contentForm:saveButtonId=<SPAN class="ui-button-icon-left ui-icon ui-c ui-icon-disk"></SPAN><SPAN class="ui-button-text ui-c">Save</SPAN>
在表单上,按钮值只是“保存”。所有按钮都带有上述 html 文本的值。
到目前为止我尝试了什么?
- 如果我使用 javascript onSubmit 从按钮中删除按钮值,它会起作用。
- 我尝试添加一个 servlet 过滤器来添加一个 servlet 请求类包装器,如果它包含按钮值,它会更改按钮值,但它不起作用。我的假设是 JSF 框架使用默认的 servletRequest 类而不是我的包装类,因此不使用清理后的参数值。
- 我希望将 FacesServlet 子类化,但我不能,因为它是最终类。
请让我知道我的选项是什么,因为它确实会影响我们在生产环境中的应用程序,而且我的时间和选项已经不多了。
为了重现它,首先必须正确设置 IE 安全设置。我们的设置是: IE9->工具-->Internet选项-->安全-->本地Intranet被选中 单击站点按钮并选择自动检测 Intranet。 单击“高级”按钮并将当前选定的 Web 应用程序 URL 添加到网站列表中。 例如,我的添加为 http://IpAddress_Or_DomainName_Of_WebApp
如果 url 未添加到上述 Intranet 站点列表中,则 IE 行为正常。我们的生产 url 是一个 Intranet 站点,并已添加到列表中以获得额外的安全功能。我无法改变它,因为它是公司范围的政策,但我希望我可以从 JSF 或 Javascript 或 servlet 端做些什么来解决这个问题。
感谢您在这方面的任何帮助。
【问题讨论】:
-
这条评论是什么意思?你解决了吗?如果有,请自行删除或回答
标签: java javascript jsf jsf-2 primefaces