如何防止在页面上使用任何按钮时触发rowSelector的clickAction方法?

时间:2012-05-21 14:44:42

标签: java jsf facelets icefaces

我的ice:dataTable在一列中有一个ice:rowSelector,在另一列中有一个ice:selectBooleanCheckboxice:rowSelectortoggleOnInput设置为false 如果我在一行中选中一个复选框(单击一下),则不会触发clickAction(因为toggleOnInput - 到目前为止,这很好)。
但是,如果在此之后单击同一页面上的按钮,无论它们具有什么操作绑定,都会触发rowSelector的clickAction。为什么呢?
有什么想法可以防止这种情况吗?

这是我的页面定义:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:ice="http://www.icesoft.com/icefaces/component"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:h="http://java.sun.com/jsf/html">
    <f:view>
        <ice:form>
            <ice:commandButton value="Test" />

            <ice:dataTable id="dataTable"
                       value="#{PageBean.data}"
                       var="entity">
                <ice:column>
                    <ice:selectBooleanCheckbox />
                </ice:column>
                <ice:column>
                    <ice:outputText value="#{entity.name}" />
                    <ice:rowSelector clickAction="#{PageBean.clickAction}" toggleOnInput="false" />                 
                </ice:column>
            </ice:dataTable>
       </ice:form>
    </f:view>
</html>

2 个答案:

答案 0 :(得分:1)

您可以尝试为页面和数据表中的其他按钮制作不同的表单,我们不应该有嵌套表单但可以有多个表单

如果您在单击相应的行时执行要调用的Action方法,我建议使用selectionAction属性。

希望这可以帮到你

答案 1 :(得分:0)

我可以看到您正在使用指定为的命令按钮:

ice:commandButton

The ice:commandButton tag displays a button which can be linked to an action in 
a backing bean method by specifying the bean and the method in the actionListener
attribute. The button can be replaced by an image by specifying the URL of the  
image in the image attribute.

我清楚地看到它是由bean方法支持的。彻底检查你的代码。