【问题标题】:Why is a dynamic created JSF EL value expression not resolved?为什么动态创建的 JSF EL 值表达式未解析?
【发布时间】:2011-04-25 06:29:37
【问题描述】:

我有一个简单的设置(也是一个大问题):一个带有空面板网格项容器和一个 bean 绑定的 JSP 页面。

<h:panelGrid binding="#{ bean.container }" id="container" />

当 bean 的 getter 被调用时,容器中会填充随机数量的列,其中包含一个命令链接。到目前为止,一切都很好。容器中填充了正确数量的元素,并且通过在链接上使用 ActionListener,我得到了所有点击事件。

棘手的部分来了:我想通过不同的样式类标记“选定”或“按下”列。使用静态设置,我会使用如下表达式:

<h:column styleClass="#{ bean.selectedColumn eq 'id' ? 'btnSelected' : 'btn' }">
    <!-- command link and some blahblah -->
</h:column>

bean 包含一个简单的 getter getSelectedColumn() ,它返回一个 id。直截了当,所以这很完美!

但是当我尝试在 bean 中做同样的事情时

ELContext elContext = FacesContext.getCurrentInstance().getELContext();
String expression = "#{ bean.selectedColumn eq 'id' ? 'btnSelected' : 'btn' }";
new ExpressionFactoryImpl().createValueExpression(elContext, expression, String.class);
column.setValueExpression("styleClass", valueExpression);

表达式永远不会被解析。为了让我自己清楚:命令链接、值表达式都是在bean内部生成的。是这个原因吗?

谁能告诉我为什么?提前致谢!

【问题讨论】:

    标签: jsf el javabeans dynamic-content


    【解决方案1】:

    当 JSP 被编译时,bean 不会被调用!这是在运行时完成的,因为您想查看 bean 中的实时数据。因此(后来)生成的 EL 在编译时是不可见的。 EL 不会在运行时被解析。

    【讨论】:

    • 好的,这很有道理。我会尝试别的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-03-25
    • 2011-08-21
    • 2013-03-24
    • 2013-02-06
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多