将setter方法中组件的id传递给ManagedBean

时间:2014-04-28 01:48:22

标签: java jsf jsf-2

好吧,我的ManagedBean中有一个通用的setter方法。这个通用方法应该将具有组件标识的属性的值添加到" Map"中,请参阅XHTML页面中的我的组件:

<h:outputLabel value="Data Fechamento: " />
                    <p:calendar pattern="dd/MM/yyyy" required="true"
                        requiredMessage="A Data de Fechamento é obrigatória"
                        value="#{relatorioMB.param}">
                    </p:calendar>

在我的ManagedBean中,请参阅setter方法&#34; setParam()&#34;:

public void setParam(Object value){
    String compId = "dataFechamento"; //here should be a generic form to get component id
    AppContext.getInstance().addAttribute(compId, value);
    }

我的XHTML页面中的所有组件都会调用&#34; setParam()&#34;并向&#34; AppContext&#34;添加新属性类。我该怎么办?

编辑1

我尝试在setter方法中使用getCurrentComponent,但它返回&#34; panelGrid&#34; (父)而不是日历。

UIComponent ui = UIComponent.getCurrentComponent(FacesContext.getCurrentInstance());

1 个答案:

答案 0 :(得分:0)

您可以创建一个处理程序bean,它将获取所有参数并将它们放入数组中。在那里,您可以使用循环为数组中的每个元素调用setParam()

这方面的一个例子是:

如果您需要来自inputText的信息,请在您的页面上填写:

<h:inputText id="id" value="#{Handler.id}"></h:inputText>

这会将处理程序上的值设置为您可以使用的字段。

然后当你有一个按钮从你的处理程序调用一个动作,如:

<h:commandButton action="#{Handler.doAction}" />

然后就像从处理程序调用方法一样简单!

希望这有帮助!