我有一个表并使用actionListener来执行删除操作,请参阅下图。 现在我使用event.getComponets()来获取从f:param标签设置的值。但是,通过这种方式,我必须将组件id硬编码到支持bean中。看起来不是一个好方法。当表中有一个动作按钮列表时,有更好的方法从UI传递值。
final UIParameter parm = (UIParameter) event.getComponent().findComponent(EDIT_SITE_ID_PARM); return (Integer)parm.getValue();
答案 0 :(得分:1)
你可以使用a4j:actionParam name =“..”value =“..”,它就像f:param一样,但也会自动分配给bean属性。另一种选择是使用f:setPropertyActionListener。
答案 1 :(得分:0)
你的动作听众应该是这样的:
public void deleteActionListener(ActionEvent event) {
final String param = (String) FacesContext
.getCurrentInstance().getExternalContext()
.getRequestParameterMap().get("deleteIdParam");
//convert to int and call your delete method
}
因此您只需对参数的名称进行硬编码,而不是组件的ID。
当然,现在你的actionListener将是deleteActionListener而不是旧的。
答案 2 :(得分:0)
Christian通过使用actionparam找到了一种方法。我已将代码放在以下
中<a4j:commandButton value="delete" >
<a4j:support event="onclick" reRender="reviewArea">
<a4j:actionparam name="setViewMode" assignTo="#{backingBean.selectTmpId}" value="#{item.id}" actionListener="#{backingBean.viewMsgContent}" />
</a4j:support>