JSF / Facelets ajax视图呈现问题

时间:2012-05-04 21:00:01

标签: jsf-2 richfaces facelets

我有一个带有两个commandlink按钮和两个outputpanel的.xhtml。一切都在同一形式。当我点击commandlink时,为什么我需要明确说明需要渲染哪些输出面板?如果没有指定,不应该根据Spec(或)中的以下描述重新构建整个视图我混合的东西?

当我们想要在同一视图中刷新组件时,我们是否真的需要设置action="navigation-rule"

Link controls are typically used to perform complete form submissions for data storing.
As a consequence, the <a4j:commandLink> component has the execute="@form" setting by default. 

非常感谢任何输入。

以下是供参考的代码:

 <h:form>
        <div>
            <a4j:outputPanel layout="block">
                <!--Tab1 -->
                <a4j:commandLink
                    id="homeTabLinkId"
                    value="Tab1"
                    actionListener="somelistener" render="contentDIVId">
                    <h:outputText value=""/>
                </a4j:commandLink>
                <!--Hosts Tab -->
                <a4j:commandLink 
                    id="hostsTabLinkId"
                    value="Tab2"
                    actionListener="anotherlistener" render="contentDIVId">
                    <h:outputText value=""/>
                </a4j:commandLink>


            </a4j:outputPanel>
        </div>

        <a4j:outputPanel layout="block" id="contentDIVId">
            <!-- dynamically gets src based on tab click -->
            <ui:include id="tabBodyPanel" src="elexpression"/>
        </a4j:outputPanel>

        <a4j:outputPanel layout="block" id="anotherdiv">
            <h:outputText value="Inside second div"/>
        </a4j:outputPanel>

    </h:form> 

1 个答案:

答案 0 :(得分:3)

  

如果没有指定,不应该根据Spec(或)中的以下描述重新构建整个视图我混合了什么?

这仅适用于同步请求。将<a4j:commandLink>替换为<h:commandLink>,您将获得所描述的行为。


  

当我们想要在同一视图中刷新组件时,我们是否真的需要设置action =“navigation-rule”?

没有。操作方法可以返回nullvoid。否则,如果您在视图上查看范围内的bean,则将重新创建视图,而这不是您想要的。