首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在操作MethodExpression中将当前UIComponent作为"this“传递

在操作MethodExpression中将当前UIComponent作为"this“传递
EN

Stack Overflow用户
提问于 2012-02-09 21:53:04
回答 1查看 1.9K关注 0票数 2

是否有可能将当前的UIComponent作为操作中的this的MethodExpression传递?

XHTML

代码语言:javascript
复制
<p:menuitem id="test" value="Test" action="#{controller.test(this)}" update="test" />

Java

代码语言:javascript
复制
public String test(MenuItem item) {
    // Do something with item
    return null;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-09 22:07:13

您可以使用隐式EL变量#{component}来执行此操作:

代码语言:javascript
复制
<p:menuitem ... action="#{controller.test(component)}" />

使用

代码语言:javascript
复制
public void test(UIComponent component) {
    // ...
}

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

代码语言:javascript
复制
<p:menuitem ... action="#{controller.test(component.id)}" />

使用

代码语言:javascript
复制
public void test(String id) {
    // ...
}

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

代码语言:javascript
复制
<p:menuitem ... action="#{controller.test(component.value)}" />

使用

代码语言:javascript
复制
public void test(String value) {
    // ...
}

您也可以使用UIComponent#getCurrentComponent()来实现以下功能:

代码语言:javascript
复制
<p:menuitem ... action="#{controller.test}" />

使用

代码语言:javascript
复制
public void test() {
    UIComponent component = UIComponent.getCurrentComponent(FacesContext.getCurrentInstance());
    String id = component.getId();
    String value = ((MenuItem) component).getValue();
    // ...
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9212079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档