【问题标题】:OpenFaces 3 and IE6 (Button actions)OpenFaces 3 和 IE6(按钮操作)
【发布时间】:2011-08-31 00:59:15
【问题描述】:

我正在使用 OpenFaces,并且必须与 IE6 兼容。到目前为止,一切都或多或少没有问题。

但是,我遇到了一个问题......

我在一个表单中有几个按钮。保存、添加、导出和删除。在 Firefox 和 IE8 上单击 Export 可以正常工作,调用定义的 bean 中的 exportToCsv(),因此它必须是浏览器行为。在 IE6 中单击 Export 会调用 bean 中的 add() 而不是 exportToCsv()。

有什么想法吗?

提前谢谢你。

【问题讨论】:

  • 仍然支持 IE6?你有我深切的同情。我希望您为此收取额外费用。

标签: java jsf xhtml jsf-2 openfaces


【解决方案1】:
【解决方案2】:

IE6 的 <button> 元素存在错误。它确实支持它,但它没有正确发送值。

解决方案 1:改用 <input type='button'>。 这可能是最明显的解决方案,但根据您的页面设计,这可能是个问题,因为它不像 <button> 那样支持嵌套元素。

解决方案 2:使用<button>,但通过 Javascript(或更可能是 JQuery)触发操作,而不是直接提交表单,并使用一种技术,例如让 JS 根据单击哪个按钮填充隐藏字段,以确保提交正确的详细信息。

【讨论】:

    【解决方案3】:

    只有在 <o:commandButton></o:commandButton> 之间指定显示按钮的内容时,<o:commandButton> 组件才会呈现 <button> 标记而不是 <input>。如果只需要显示纯文本,则不必使用这种方式,可以使用通常的value属性,这样会导致渲染<input>标签而不是<button>,即使用:

    <o:commandButton value="Submit"... /> 
    

    而不是

    <o:commandButton ...>Submit</o:commandButton>
    

    问题是后一种形式允许放置任意 HTML,因此需要&lt;button&gt; 标签。

    【讨论】:

    • 我确实在标签之间指定了内容并且确实需要它们...但是,您知道解决方法吗?如何使用 O$.ajax.request 取回文件并使用 window.open(...) 打开文件?你有一个例子吗?谢谢。
    • 一种解决方法是通过指定其渲染/执行属性将按钮切换到 Ajax 模式,如果在您的情况下使用 Ajax 是合适的。我们还将尝试在组件本身中修复此问题(只需跟踪 OF-112 的状态)
    【解决方案4】:

    使用 OpenFaces 时的解决方法

    <o:outputLink styleClass="linkButton" ...>
    
    .linkButton {
        display: block;
        float: left;
        margin: 0 0 0 0;
        background-color: #f5f5f5;
        border: 1px solid #dedede;
        border-top: 1px solid #eee;
        border-left: 1px solid #eee;
        font-family: "Lucida Grande", Tahoma, Arial, Verdana, sans-serif;
        text-decoration: none;
        font-weight: bold;
        color: #565656;
        cursor: pointer;
        padding: 2px 2px 2px 2px; /* Links */
    }
    

    来自此来源的修改 CSS:

    【讨论】:

      猜你喜欢
      • 2018-12-20
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 2012-12-24
      • 2019-06-13
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多