在Richfaces中将值传递给backing bean的最佳方法

时间:2011-04-18 19:04:49

标签: richfaces

我有一个表并使用actionListener来执行删除操作,请参阅下图。 现在我使用event.getComponets()来获取从f:param标签设置的值。但是,通过这种方式,我必须将组件id硬编码到支持bean中。看起来不是一个好方法。当表中有一个动作按钮列表时,有更好的方法从UI传递值。

    final UIParameter parm = (UIParameter) event.getComponent().findComponent(EDIT_SITE_ID_PARM);
    return (Integer)parm.getValue();

enter image description here

enter image description here

3 个答案:

答案 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>