Передайте UIComponent в действии - PullRequest
1 голос
/ 09 февраля 2012

Есть ли возможность передать UIComponent в MethodExpression действия?

* 1003 одной рубрике *

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

Java

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

1 Ответ

4 голосов
/ 09 февраля 2012

Вы можете использовать неявную переменную 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());
    // ...
}
...