JSF 2.2内容在页面刷新之前不会呈现

时间:2016-01-29 17:47:33

标签: jsf-2

我通过AJAX将内容从服务器加载到我的JSF页面中。但是,并非所有内容都立即显示,在刷新页面之前不会显示两个div。

以下是加载内容的表单:

            <h:form>
                <h:dataTable value="#{consoleController.list}" var="item">
                    <h:column>
                        <h:commandLink class="list-group-item"
                            action="#{consoleController.defineLink()}">#{item}
                <f:setPropertyActionListener target="#{consoleController.content}"
                                value="#{item}" />
                            <f:ajax event="action" render="menuDiv contenDiv facetDiv"></f:ajax>
                        </h:commandLink>
                    </h:column>
                </h:dataTable>
            </h:form>

这些是我想要加载代码的元素。

<div class="col-sm-12">
    <div class="col-sm-4">
        <h:panelGroup id="menuDiv">
            <ui:include src="#{consoleController.loadMenu()}" />
        </h:panelGroup>
    </div>
    <div class="col-sm-8">
        <h:panelGroup id="contentDiv">
            <ui:include src="#{consoleController.loadPage()}" />
        </h:panelGroup>
    </div>
</div>
<div class="col-sm-12">
    <h:form>
        <h:panelGroup id="facetDiv">
            <ui:include src="#{consoleController.loadFacet()}" />
        </h:panelGroup>
    </h:form>
</div>

menuDiv显示正常,其他两个在我刷新页面之前不会显示。

这里有什么问题?

我读到你无法上传JSF树中不存在的元素,但这不是这种情况。

1 个答案:

答案 0 :(得分:0)

好吧,事实证明它就像删除最后一个面板标签周围的h:form标签一样简单:

<div class="col-sm-12">
    <h:form>
        <h:panelGroup id="facetDiv">
            <ui:include src="#{consoleController.loadFacet()}" />
        </h:panelGroup>
    </h:form>
</div>

变为:

<div class="col-sm-12">
        <h:panelGroup id="facetDiv">
            <ui:include src="#{consoleController.loadFacet()}" />
        </h:panelGroup>
</div>

现在可行。