Java 单击p:selectBooleanCheckbox应启用/禁用输入文本

Java 单击p:selectBooleanCheckbox应启用/禁用输入文本,java,jsf,jsf-2,primefaces,Java,Jsf,Jsf 2,Primefaces,选中复选框后,应启用相应的输入文本。但未设置permit属性,也未调用updateRoles侦听器。我没有任何例外,没有任何迹象表明出了什么问题。我使用的是PrimeFaces3.4,Mojarra 2.0.8 <p:dataTable id="databases" var="database" value="#{mssqlAccDBAccess.databases}" sortBy="#{database.name}" resizableColumns="false">

选中复选框后,应启用相应的输入文本。但未设置permit属性,也未调用updateRoles侦听器。我没有任何例外,没有任何迹象表明出了什么问题。我使用的是PrimeFaces3.4,Mojarra 2.0.8

<p:dataTable id="databases" var="database" value="#{mssqlAccDBAccess.databases}"
    sortBy="#{database.name}" resizableColumns="false">
    <p:column headerText="#{label.mssqlDatabasePermission}">
        <p:selectBooleanCheckbox value="#{database.permit}"
            disabled="#{not enabled}">              
            <p:ajax listener="#{mssqlAccDBAccess.updateRoles}" update="user" />
            <f:attribute name="selectedRecord" value="#{database}" />
        </p:selectBooleanCheckbox>
    </p:column> 
    <p:column headerText="#{label.mssqlDatabaseName}"
        sortBy="#{database.name}">
        <h:outputText value="#{database.name}" />
    </p:column>
    <p:column headerText="#{label.mssqlDatabaseUser}">
        <p:inputText id="user" disabled="#{not database.permit or not enabled}"
            value="#{database.user}">       
        </p:inputText>
    </p:column>
</p:dataTable>

我添加了
。它不存在,因为我不认为它是相关的。< /P>尝试删除<代码>禁用=“{{不启用}”< /COD> >什么是<代码>启用< /代码>?它不应该是某个托管bean属性吗?启用是作为ui:param传递的布尔值。此facelet包含在另一个JSF页面中。您是否检查了
是否显示了预期值?另外,您的
mssqlaccdaccess
bean在哪个范围内?
h:outputText
显示一个真实值
mssqlaccdaccess
是一个会话范围的托管bean。在您的位置上,我可以通过使用表单包装表并直接访问这个xhtml来简化这个过程,而不是添加一些东西来查看是什么导致了这种奇怪的行为……尝试删除
禁用的=“#{not enabled}”
启用的
是什么?它不应该是某个托管bean属性吗?启用是作为ui:param传递的布尔值。此facelet包含在另一个JSF页面中。您是否检查了
是否显示了预期值?另外,您的
mssqlaccdaccess
bean在哪个范围内?
h:outputText
显示一个真实值
mssqlaccdaccess
是一个会话范围的托管bean。在您的位置上,我将通过使用表单包装表并直接访问此xhtml来简化此过程,而不是添加内容来查看导致此奇怪行为的原因。。。
public void updateRoles(AjaxBehaviorEvent event) {  
    SelectBooleanCheckbox permit = (SelectBooleanCheckbox) event.getComponent();
    boolean checked = (Boolean) permit.getValue();
    if (checked) {
        Database database = (Database) permit.getAttributes().get("selectedRecord");
        showRoles(database.getRoles());         
    } else {
        hideRoles();
    }       
}