2

thisアクションのMethodExpressionのように現在のUIComponentを渡す可能性はありますか?

XHTML

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

Java

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

1 に答える 1

5

これには、暗黙の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) {
    // ...
}

または、たとえばvalue属性のみに関心がある場合:

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

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

UIComponent#getCurrentComponent()または、これに使用することもできます。

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

public void test() {
    UIComponent component = UIComponent.getCurrentComponent(FacesContext.getCurrentInstance());
    String id = component.getId();
    String value = ((MenuItem) component).getValue();
    // ...
}
于 2012-02-09T14:07:13.237 に答える