我有一个带有两个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>
答案 0 :(得分:3)
如果没有指定,不应该根据Spec(或)中的以下描述重新构建整个视图我混合了什么?
这仅适用于同步请求。将<a4j:commandLink>
替换为<h:commandLink>
,您将获得所描述的行为。
当我们想要在同一视图中刷新组件时,我们是否真的需要设置action =“navigation-rule”?
没有。操作方法可以返回null
或void
。否则,如果您在视图上查看范围内的bean,则将重新创建视图,而这不是您想要的。