这里我没有采用onchange事件,而是通过onclick事件触发action,这样DataModelSelection会自动注入。
note:但是DataModelSelection在reRender的时候有个问题,如果直接用DataModelSelection绑定的bean去刷新其他区域,一切正常;如果想刷新DataModel的表单,这个DataModelSelection就不会更新,还是以前的数据,估计是出于对DataModel的数据保护。所以这时候我新创建了一个bean,showPgsDataBean,在触发action的时候给showPgsDataBean赋值,这样再刷新表单或其他区域就一切正常了。
以下代码供参考。
xhtml代码:
<rich:column>
<h:selectOneRadio value="#{planDetailAction.selectedPlanName}">
<f:selectItem itemValue="#{pgsDataBean.planInfo.basicPlan}" />
<a:support event="onclick" ajaxSingle="true" action="#{planDetailAction.selectPlanProposal()}" reRender="planList,planDetail"/>
</h:selectOneRadio>
</rich:column>
java代码:
@DataModel("pgsDataBeanList")
private List<PgsDataBean> pgsDataBeanList = new ArrayList<PgsDataBean>();
@DataModelSelection("pgsDataBeanList")
private PgsDataBean selectedPgsDataBean;
// ui binding
@In(required=false)
@Out(required=false)
private PgsDataBean showPgsDataBean;
public void selectPlanProposal() {
log.debug("selectedPlanName =#0", selectedPlanName);
log.debug("#0.selectPlanProposal() selectedPgsDataBean.planInfo.basicPlan=#1", this, selectedPgsDataBean.getPlanInfo().getBasicPlan());
this.showPgsDataBean=selectedPgsDataBean;
}