2

チェックボックスを選択すると、対応する入力テキストが有効になります。ただし、permitプロパティは設定されておらず、updateRolesリスナーも呼び出されません。例外はなく、何か問題が発生している兆候もありません。PrimeFaces 3.4、Mojarra2.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}" />た。関連性があるとは思わなかったので、そこにはありませんでした。

4

0 に答える 0