jsf a4j:commandButton重新加载程序不';行不通

jsf a4j:commandButton重新加载程序不';行不通,jsf,jsf-1.2,Jsf,Jsf 1.2,如果我将第一个按钮更改为h:commandButton,我的jsf页面就可以正常工作。但是,这会在提交时刷新整个页面,因此我的要求是将这两个按钮都保留为ajax支持的按钮。 我的支持bean具有所有必需的方法。单击第二个按钮时,以下代码不会打印选择。日志打印“null”作为选择。我做错了什么 <h:form> <a4j:commandButton action="#{Bean.getAllReps}" value="Get REPS" reRender="showReps" /

如果我将第一个按钮更改为h:commandButton,我的jsf页面就可以正常工作。但是,这会在提交时刷新整个页面,因此我的要求是将这两个按钮都保留为ajax支持的按钮。 我的支持bean具有所有必需的方法。单击第二个按钮时,以下代码不会打印选择。日志打印“null”作为选择。我做错了什么

<h:form>
<a4j:commandButton action="#{Bean.getAllReps}" value="Get REPS" reRender="showReps" />
</h:form>
<h:panelGrid columns="1" id="showReps">
    <h:panelGrid rendered="#{Bean.actionComplete eq 'fail'}" width="100%" columns="2">
        <h:outputText value="Could not get Details" style="color: red; font-size:3mm;" />
    </h:panelGrid>
            <h:panelGrid rendered="#{Bean.actionComplete eq 'success'}">
                <h:panelGrid>
                    <h:outputText>
                        <rich:panel>
                            <h:form>
                                <h:panelGrid>
                                    <rich:pickList value="#{Bean.slctdRep}" style="text-align: left;">
                                        <f:selectItems value="#{Bean.allReps}" />
                                    </rich:pickList>
                                </h:panelGrid>

                                <a4j:commandButton value="Show Selection" reRender="content" type="submit"></a4j:commandButton> //This button doesn't perform partial refresh on element with id "content"

                            </h:form>
                        </rich:panel>
                        <rich:panel>
                            <h:panelGroup id="content" layout="block">
                                <h:outputText value="Selected Reps : "></h:outputText>
                                <h:outputText value="#{Bean.selectedRepsInString}"></h:outputText>
                            </h:panelGroup>
                        </rich:panel>

                    </h:outputText>
                </h:panelGrid>
            </h:panelGrid>
</h:panelGrid>

//此按钮不会对id为“content”的元素执行部分刷新

我发现了问题,我有两个表单标签,每个按钮一个,这就是问题的原因。我将整个代码包装在一个表单中,现在它可以按预期工作了

从这里得到了解决方案:

更新代码:

<a4j:form>
    <a4j:commandButton action="#{Bean.getAllReps}" value="Get REPS" reRender="showReps" type="submit" />
    <h:panelGrid columns="1" id="showReps">
        <rich:panel>
            <h:panelGrid>
                <rich:pickList sourceListWidth="200" targetListWidth="200" value="#{Bean.slctdRep}">
                    <f:selectItems value="#{Bean.allReps}" />
                </rich:pickList>
            </h:panelGrid>

            <a4j:commandButton value="Show Selection" reRender="content" type="submit" action="#{Bean.getSelectedReps}" />
        </rich:panel>

        <rich:panel>
            <h:panelGroup layout="block" id="content">
                <h:outputText value="#{Bean.selectedReps}"></h:outputText>
            </h:panelGroup>
        </rich:panel>

    </h:panelGrid>
</a4j:form>


那么动作被调用了吗?是的,第一个按钮被调用,但是,如果我将第二个按钮也设为4J:commandButton,那么第二个commandButton将停止工作。它不是用id='content'呈现面板,而是重新呈现另一个丰富的:面板内部
h:outputText
(这是一个奇怪的且需要避免的构造!!!您建议我如何使两个按钮都工作?并创建一个。缺少代码…我怀疑您在