OpenFaces 3和IE6(按钮动作)

时间:2011-05-23 10:04:15

标签: java jsf xhtml jsf-2 openfaces

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

然而,我遇到了一个问题......

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

有什么想法吗?

提前谢谢。

4 个答案:

答案 0 :(得分:3)

只有在<o:commandButton><button>之间指定显示按钮的内容时,<input>组件才会呈现<o:commandButton>标记而非</o:commandButton>。如果您只需要显示纯文本,那么您不必使用此方法,并且可以使用通常的value属性,这将导致呈现<input>标记而不是{{1} },即使用:

<button>

而不是

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

事情是,后一种形式允许放置任意HTML,因此需要<o:commandButton ...>Submit</o:commandButton> 标签。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

答案 3 :(得分:0)

使用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: