a4j:commandButton不呈现元素

时间:2014-12-12 12:18:19

标签: jsf richfaces ajax4jsf commandbutton

我有一个<rich:tabPanel>的JSF页面,其中包含4个标签。

在第4个标签页上,我尝试使用<a4j:commandButton>执行操作并渲染resulTable

这是缩短的例子

<rich:tab header="Journal">

    <h:form id="filterForm">
        <a4j:jsFunction name="submitByEnter"
                        action="#{smsLogList.refresh}" render="smsTable" />
        <s:div id="divSearch">
            <rich:collapsiblePanel header="#{messages['search']}"
                                   switchType="client">
                <h:panelGrid column="1">
                    <s:decorate template="/layout/edit.xhtml">
                        <ui:define name="label">Package number</ui:define>
                        <h:inputText id="packNum" style="width:200px"
                                     value="#{smsLogList.packNum}">
                            <a4j:ajax event="keyup" listener="#{smsLogList.refresh}"
                                      ignoreDupResponses="true" requestDelay="1500"
                                      render="smsTable" />
                        </h:inputText>
                    </s:decorate>

                    <!---some other search elements-->

                    <s:div styleClass="actionButtons">
                        <a4j:commandButton id="search" value="#{messages['search']}"
                                           render="smsTable" action="#{smsLogList.go}" />
                        <a4j:commandButton id="reset" value="#{messages['clear']}"
                                           onclick="document.getElementById('filterForm').reset();"
                                           action="#{smsLogList.clear}" render="divSearch,smsTable" />
                    </s:div>
                </h:panelGrid>
            </rich:collapsiblePanel>
        </s:div>

        <!--- results table-->

        <h:panelGrid id="smsTable">
            <s:div>
                <rich:dataTable value="#{smsLogList.resultList}" var="sms"
                                id="table" rendered="#{not empty smsLogList.resultList}">
                    <rich:column>
                        <f:facet name="header">Type</f:facet>
                        <h:outputText value="#{sms.smsType}" />
                    </rich:column>

                    <!---- some other columns-->

                </rich:dataTable>
                <rich:dataScroller for="table" />
            </s:div>
        </h:panelGrid>
    </h:form>
</rich:tab>

因此,当我点击<a4j:commandButton>时 - 没有任何反应,但如果我切换到另一个标签并返回 - 结果是必要的。 我尝试将a4j更改为<h:commandButton>,但在按下之后页面会切换到第一个标签。

有任何解决方案如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

解决方案非常简单。 我在其他<h:form>中使用了<h:form>。无论如何它都行不通。当我删除内部时 - jsf工作顺利,应该如此。