Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何防止在使用页面上的任何按钮时触发该行选择器的clickAction方法?_Java_Jsf_Facelets_Icefaces - Fatal编程技术网

Java 如何防止在使用页面上的任何按钮时触发该行选择器的clickAction方法?

Java 如何防止在使用页面上的任何按钮时触发该行选择器的clickAction方法?,java,jsf,facelets,icefaces,Java,Jsf,Facelets,Icefaces,我有一个ice:dataTable,一列中有一个ice:rowSelector,另一列中有一个ice:selectBooleanCheckbox。ice:rowSelector已将toggleOnInput设置为false。 如果我选中一个复选框并单击一行,则不会触发clickAction,因为toggleOnInput-到目前为止,一切正常。 但是,如果在此之后单击同一页面上的按钮,无论它们具有什么操作绑定,都会触发行选择器的clickAction。为什么? 有什么办法防止这种情况发生吗 以下

我有一个ice:dataTable,一列中有一个ice:rowSelector,另一列中有一个ice:selectBooleanCheckbox。ice:rowSelector已将toggleOnInput设置为false。 如果我选中一个复选框并单击一行,则不会触发clickAction,因为toggleOnInput-到目前为止,一切正常。 但是,如果在此之后单击同一页面上的按钮,无论它们具有什么操作绑定,都会触发行选择器的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>

我可以看到您正在使用一个命令按钮,该按钮被指定为:

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方法支持的。仔细检查代码。

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

另外,如果您正在执行一个操作方法来在单击相应行时调用,我建议使用selectionAction属性


希望这能帮助您

如果您删除行选择器的clickAction,它是否仍被激发?不,如果我删除它,它不会被激发。您在PageBeanclickAction方法中做什么?我做了一些与单击的表行相关的事情。嗨,迈克,谢谢您的努力,但我不明白您想说什么。正如您在我的问题中看到的,我的按钮没有链接到支持bean方法。触发的是行选择器clickAction。我认为这是ice faces中的一个错误,您需要从服务器端对bean值进行操作,以便无论何时按下按钮,都不会执行与行选择器相关的任何操作。按照您的建议,使用selectionAction解决了此问题。非常感谢。