2012-02-09 178 views
1

是否有可能在操作的MethodExpression中傳遞UIComponent?傳遞UIComponent in Action MethodExpression

的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

可以使用隱式的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()); 
    // ... 
}