在Action MethodExpression中传递UIComponent

时间:2012-02-09 13:53:04

标签: jsf-2 primefaces uicomponents

是否有可能在操作的MethodExpression中传递UIComponent?

XHTML

<p:menuitem id="test" value="Test" action="#{controller.test(this)}" update="test" />

爪哇

public String test(MenuItem item) {
    // Do something with item
    return null;
}

1 个答案:

答案 0 :(得分:4)

您可以使用隐式EL变量#{component}

<p:menuitem ... action="#{controller.test(component)}" />

public void test(UIComponent component) {
    // ...
}

或者,如果您只对id属性感兴趣:

<p:menuitem ... action="#{controller.test(component.id)}" />

public void test(String id) {
    // ...
}

您也可以使用UIComponent#getCurrentComponent()

<p:menuitem ... action="#{controller.test}" />

public void test() {
    UIComponent component = UIComponent.getCurrentComponent(FacesContext.getCurrentInstance());
    // ...
}