java - 从组件树中读取复合组件属性的字面值

标签 java jsf-2

我有一个与此类似的复合标签:

<ui:decorate template="....">
   <ui:define name="...">
       <h:inputText value="#{value}"/>
   </ui:define>
</ui:decorate>

它用在像

这样的页面中
<ns:tag value="#{some.el.expression}"/>

它按原样工作得很好。现在我想从java代码访问“some.el.expression”。我需要类似于 component.getValueExpression("value") 的东西。 它似乎不起作用,如果我可以在 inputText 节点上使用它,它会给我“#{value}”,这不是我想要的。我无法找到访问该值的方法。 有什么想法吗?

最佳答案

您可以使用Application#evaluateExpressionGet()以编程方式计算 EL 表达式。

FacesContext context = FacesContext.getCurrentInstance();
Object value = context.getApplication().evaluateExpressionGet(
    context, "#{some.el.expression}", Object.class);

其中Object.class可以替换为真实的返回类型。请注意,它返回的任何内容都取决于您评估表达式的确切时刻。它可能尚未位于 EL 范围内,或者可能已从 EL 范围中删除。

关于java - 从组件树中读取复合组件属性的字面值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12205103/

相关文章:

jsf-2 - 取消突出显示自动完成中的第一个突出显示的项目

jsf - JSF 中具有单个命令组件的多个操作监听器

java - 使用帖子的登录表单只能使用一次?找不到错误

java - 使用 ExecutorService 并行化循环来执行任务

java - 在 Rest Controller 类而不是每个 Controller 方法中获取用户

ajax - 如何使用 jQuery 的 AJAX 将一个 JSF2 页面注入(inject)另一个页面

jsf - JSF Web 应用程序中不断出现“目标无法访问”、标识符解析为 null 的情况

jsf-2 - 使用 ui :composition 时如何更改页面的头部元素

java - 使用 Ivy 的类路径问题

java - 如何在 Selenium 3.6 中使用 IE11 执行 Shift 点击