a4j:actionparam 组件是f:param和f:actionListener的组合,可以直接对某一个Manange Bean的property进行赋值,例如下面代码:
这些代码的作用是显示当前屏幕的宽度与高度,使用screen对象获得值,需要注意的是,必须将noEscape的值设置为true方可。在上面的代码中,第三行的actionparam对userBean.name赋值,参数名称是username,值是Alex。
- <rich:panel>
- <a4j:commandButton value="Set Name to Alex" reRender="rep" >
- <a4j:actionparam name="username" value="Alex" assignTo="#{userBean.name}"/>
- </a4j:commandButton>
- <rich:spacer width="20" />
- <a4j:commandButton value="Set Name to John" reRender="rep" >
- <a4j:actionparam name="username" value="John" assignTo="#{userBean.name}"/>
- </a4j:commandButton>
- </rich:panel>
- <rich:panel>
- <h:outputText id="rep" value="Selected Name:#{userBean.name}"/>
- </rich:panel>
- </h:form>
在actionparam标签中,name和value是必要的,此外还可以指定converter对value进行转化。
需要注意的是在server端,赋值是在UPDATE_MODEL 阶段进行的,因而如果在validate阶段,如果发生validate错误,那么model中的值是不会更新的。
此外,actionparam中的value可以是javascript代码,如下所示:
- <h:form>
- <a4j:commandButton value="Show Screen Size" reRender="infoPanel">
- <a4j:actionparam name="w" value="screen.width"
- assignTo="#{userBean.screenWidth}" noEscape="true" />
- <a4j:actionparam name="h" value="screen.height"
- assignTo="#{userBean.screenHeight}" noEscape="true" />
- </a4j:commandButton>
- <rich:panel id="infoPanel">
- <h:panelGrid columns="2">
- <h:outputText value="Width:" />
- <h:outputText value="#{userBean.screenWidth}"/>
- <h:outputText value="Height:" />
- <h:outputText value="#{userBean.screenHeight}"/>
- </h:panelGrid>
- </rich:panel>
- </h:form>