2

许多问题与这个问题非常相似,但我看不到解决方案。

以下代码没有给出错误,但未按预期运行。它显示三列:

  • 第一列是一个复选框,用于激活第二列的可编辑字段

  • 第三列是行删除方法

  • 第 4 列是进入下一页的一个按钮

        <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. 有趣的是,当我然后单击selectBooleanCheckbox不使用 ajax 的第三列中的

如何使我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 回答