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

时间:2012-10-03 07:43:00

标签: java jsf jsf-2 primefaces

选中该复选框后,应启用相应的输入文本。但是没有设置permit属性,也没有调用updateRoles侦听器。我没有例外,也没有出现问题的迹象。我正在使用PrimeFaces 3.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>

编辑1

updateRoles 方法如下所示:

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();
    }       
}

我添加了<f:attribute name="selectedRecord" value="#{database}" />。那里没有,因为我认为没有相关性。

0 个答案:

没有答案