Ajax Rendered Link Out Side表单不起作用

时间:2013-08-01 13:26:05

标签: jsf jsf-2

我不确定,我在代码中做错了什么,但我经历了http://stackoverflow.com/questions/14655951/jsf-viewstate-not-updated-when-submitting-2-forms

并提供正确的组件ID,它的工作正常没有问题,但渲染的commandLink没有调用action方法,而是它创建类的对象作为托管bean在RequestScope中。

以下是我的示例代码:

    <h:form prependId="false" id="favMenu">
    <h:commandLink id="discussions" action="#{testBean.someMethod}">
Test
    <f:param name="key" value="1234" />
    <f:ajax onevent="applyDiscJs" render="@form :centerMenuContainer :center" />
    </h:commandLink> 
    </h:form>

和其他形式:

<h:outputLabel id="centerMenuContainer" styleClass="borderLessPannel">

    <div class="center" style="margin: 1.9em 18.1em 0em; width: 68.4%;">
    <h:form id="centerMenu" prependId="false">
           <h:outputLabel rendered="#{someBean.someFlg}">
                <h:commandLink id="browseDisc" action="#{someBean.navigateToBrowseDisc}"
                styleClass="">

                <h:outputText
                    value="#{messageResource['connect.discussion.main.tab.browse']}" />
            </div>
                <f:param name="sessionKey" value="#{connectDashBoardBean.sessionKey}" />

                <f:ajax onevent="applyOnGoingDiscJs" render="@form :favMenu" />
            </h:commandLink>
           </h:outputLabel>
       </h:form>
        </div>
</h:outputLabel>

上面的第二个链接没有调用bean方法。

我尝试了<ui:fragment rendered="#{someBean.someFlg}">

它不能正常工作,当我删除<ui:fragment rendered="#{someBean.someFlg}"><h:outputLabel rendered="#{someBean.someFlg}">时,它的工作方式与预期一致。

请让我知道我究竟做错了什么,因为我在ajax渲染中给出了表单ID,所以逻辑上它应该更新DOM树和应用渲染后可见的第二个链接它应该像普通ajax一样工作行为?

如果这不是条件,请告诉我其他方法我可以解决这个问题。请注意,保留一个表格对我来说是不可行的。

0 个答案:

没有答案