【发布时间】: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