2

これに非常によく似た多くの質問がありますが、解決策がわかりません。

次のコードはエラーを発生させませんが、意図したとおりに動作しません。3つの列が表示されます。

  • 1列目は、2列目の編集可能フィールドをアクティブにするチェックボックスです。

  • 3列目は行削除方式です

  • 4列目は、次のページに移動するための1つのボタンです。

        <h:column>
            <h:panelGroup id="editCol">
    
                <f:facet name="header">
                    <h:outputText value="Edit" style="font-weight: bold">
                    </h:outputText>
                </f:facet>
                <h:selectBooleanCheckbox value="#{m.editable}" onclick="submit()">
                    <f:ajax execute="editCol :formId:dataId:authorCol" render="editCol :formId:dataId:authorCol" />
                </h:selectBooleanCheckbox>
            </h:panelGroup>
    
        </h:column>
    
        <h:column>
            <h:panelGroup id="authorCol">
                <f:facet name="header">
                    <h:outputText value="Label" style="font-weight: bold">
                    </h:outputText>
                </f:facet>
                <h:inputText value="#{m.author2displayed}" rendered="#{m.editable}" size="10"/>
                <h:outputText value="#{m.author2displayed}" rendered="#{not m.editable}"/>
                <h:commandButton value="save edits" rendered="#{m.editable}" onclick="submit()" action ="#{finalCheckBean.saveedits()}">
                    <f:ajax execute="authorCol" render="authorCol" />
                </h:commandButton>
            </h:panelGroup>
        </h:column>
    
        <h:column>
            <h:panelGroup id="deleteCol">
                <f:facet name="header">
                    <h:outputText value="delete row(s)" style="font-weight: bold">
                    </h:outputText>
                </f:facet>
                <h:selectBooleanCheckbox value="#{m.deleted}" onclick="submit()"/>
                <h:commandButton value="delete row(s)?" rendered="#{m.deleted}" onclick="submit()" action ="#{finalCheckBean.deleteRow()}"/>
            </h:panelGroup>
        </h:column>
    
        <h:column>
            <f:facet name="header">
                <h:commandButton value="save changes" action="#{finalCheckBean.moveon}"/>
            </f:facet>
    
        </h:column>
    
    </h:dataTable>
    

    1. 最初の列のをチェックするselectBooleanCheckboxと、ボックスはチェックされますが、何も起こりません。実際には、2番目の列のコンポーネントの表示を切り替える必要があります。

    2. 興味深いことに、ajaxを使用していない3番目の列をクリックすると、2番目の列が再レンダリングされ、手順1でティックアクションの効果を確認できますselectBooleanCheckbox

selectBooleanCheckbox最初の列を正しく機能させるにはどうすればよいですか?

4

1 に答える 1

2
<h:selectBooleanCheckbox ... onclick="submit()">
    <f:ajax ... />
</h:selectBooleanCheckbox>

具体的な問題はonclick="submit()"、ajaxチェックボックスをオンにしていることが原因です。それを除く。form.submit()完全に競合しているトリガー<f:ajax>です。

他のajaxのないチェックボックスでも使用していますが、「行の削除」でも使用していますか?完全に不要なコマンドボタン。デフォルトでは、フォームの送信はすでにトリガーされています。

于 2012-09-24T16:17:05.413 に答える