【问题标题】:IE9 sending HTML in button value from JSF to the serverIE9 将按钮值中的 HTML 从 JSF 发送到服务器
【发布时间】: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 文本的值。

到目前为止我尝试了什么?

  1. 如果我使用 javascript onSubmit 从按钮中删除按钮值,它会起作用。
  2. 我尝试添加一个 servlet 过滤器来添加一个 servlet 请求类包装器,如果它包含按钮值,它会更改按钮值,但它不起作用。我的假设是 JSF 框架使用默认的 servletRequest 类而不是我的包装类,因此不使用清理后的参数值。
  3. 我希望将 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


【解决方案1】:

如果我没记错的话,IE9 及更高版本默认模拟 IE8 在 Intranet 站点上的行为。如果您转到“设置”->“兼容性视图设置”并取消选中“在兼容性视图中显示 Intranet 站点”,则应该停止发生。

【讨论】:

  • 谢谢,但该设置已被我们的企业 IT 安全部门禁用,因此我无法更改。
  • 你能告诉他们除非他们改变,否则人们将无法正常工作吗?
【解决方案2】:

好的,我搞定了。我在 primefaces 论坛上得到了我需要的答案。一位善良的受访者及时救了我。他建议我添加元数据标头标签来强制 IE8 行为。并且还在这里建议IE8 standards mode meta tag 谢谢大家。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-15
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    相关资源
    最近更新 更多