【发布时间】:2016-02-03 11:29:00
【问题描述】:
我有一个包含动态列的 primefaces 数据表:
<p:dataTable value="#{curSearch.getSearchResults()}" var="curSearchResult" sortMode="multiple" rowKey="#{curSearchResult.getUniqueId()}">
<p:columns value="#{curSearch.determinePrimaryPropertyNames()}" var="curPrimaryPropName" sortBy="#{curSearchResult[curPrimaryPropName].getValue()}">
...
</p:columns>
</p:dataTable>
在大多数情况下,sortBy 表达式的值适合(例如,对于日期或字符串),但我有一种必须翻译的特殊数据类型。这意味着sortBy="#{curSearchResult[curPrimaryPropName].getValue()}" 提供了一个必须转换为 i18n 字符串的字符串。然后应该对这个 i18n 字符串进行排序。不幸的是,如果表达式不包含括号[],属性sortBy 会抛出IndexOutOfBoundsExcpetion。我的想法是调用一种方法并在其中区分“正常”值和必须翻译的值。所以我的第二个想法是为必须翻译的值定义一个转换器。但是转换后的值是由 primefaces 评估的吗?我猜不会。是否有其他方法可以解决这个问题?
【问题讨论】:
标签: jsf-2 primefaces jsf-2.2