2012-02-09 3 views
1

Есть ли возможность передать UIComponent в ActionExpression?Pass UIComponent in Action MethodExpression

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

<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

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