我有一个带有<f:attribute>和<p:ajax listener>的复选框组件。
<h:selectManyCheckbox ...>
<p:ajax listener="#{locationHandler.setChangedSOI}" />
<f:attribute name="Dummy" value="test" />
...
</h:selectManyCheckbox>我试图在侦听器方法中获取<f:attribute>值test,如下所示:
public void setChangedSOI() throws Exception {
FacesContext context = FacesContext.getCurrentInstance();
Map<String, String> map = context.getExternalContext().getRequestParameterMap();
String r1 = map.get("Dummy");
System.out.println(r1);
}然而,它打印了null。我怎么才能拿到呢?
发布于 2015-06-25 07:46:57
组件属性不作为HTTP请求参数传递。组件属性设置为..。组件属性。也就是说,它们存储在UIComponent#getAttributes()中。你可以通过那张地图抓住他们。
现在正确的问题显然是如何在ajax侦听器方法中获取所需的UIComponent。这方面有两种方法:
AjaxBehaviorEvent参数。为此,它提供了一个getComponent()方法。
公共空setChangedSOI(AjaxBehaviorEvent事件){ UIComponent组件= event.getComponent();String dummy =component.getAttributes().get(“UIComponent”);// .}UIComponent#getCurrentComponent()助手方法。
{ UIComponent.getCurrentComponent(FacesContext.getCurrentInstance());String setChangedSOI=component.getAttributes().get(“UIComponent”);// .}https://stackoverflow.com/questions/31043971
复制相似问题