问题是所有重要的事情。当需要使用a4J:outputpanel和a4j:region?
时答案 0 :(得分:4)
文档说明了一切:
<a4j:region>
组件指定要在服务器上处理的JSF组件树的一部分。该区域导致所有a4j和富Ajax控件执行:解码,验证和更新模型。即使未明确声明,该区域也会导致这些组件执行。因此,可以使用声明性方法更轻松地标记处理区域。
这就像将execute
属性中的所有组件明确命名为操作一样。举个例子:
<h:inputText id="outerStuff" value="#{bean.blubb}" />
<a4j:region id="innerRegion">
<h:inputText id="stuff1" value="#{bean.bla}" />
<h:inputText id="stuff2" value="#{bean.bla2}" />
<a4j:commandButton action="#{bean.process}" value="click me" />
</a4j:region>
以下三个commandButton
定义都是等效的:
<a4j:commandButton action="#{bean.process}" value="click me"
execute="stuff1,stuff2,@this" />
<a4j:commandButton action="#{bean.process}" value="click me"
execute="@region" />
<a4j:commandButton action="#{bean.process}" value="click me" />
第三个有效,因为showcase documentation说:
但是,如果控件包含a4j:region标记并且没有执行定义,则使用execute =“@ region”代替。
与此相反,<a4j:outputPanel>
是在<h:panelGroup>
之后使用ajaxRendered
属性的附加功能建模的。如果您将其关闭,则其行为类似于panelGroup
(呈现span
或div
元素。如果你启用它,它会导致每个AJAX请求呈现它的内容(除非导致请求的组件被注释limitRender
)。
总结一下:<a4j:region>
会影响Richfaces执行视图/更新模型的方式,<a4j:outputPanel>
会更改视图的呈现方式。