0

我在我的一个应用程序中遇到了一点国际化问题。故事是这样的:

我有一个显示记录的数据表和一个 selectOneMenu,以便选择要过滤的数据表的一列。selectOne 由 SelectItem 提供,这些 SelectItem 根据 DataRefresh 时间后备 bean 中的实际区域设置填充。

现在,当用户更改语言环境时,selectOne 的内容将保留在旧语言环境中,直到重新呈现页面。这是非常合乎逻辑和预期的。

我当然希望改变。

所以我尝试编写一个自己的 selectOne,它使用包含对 languageFile 条目的引用的 selectItems,以便能够在不重新渲染的情况下更改它们。

这是我尝试过的

<select id="j_id5:filterSelector" name="j_id5:filterSelector" size="1"> 
    <c:forEach var="item" items="#{gridBean.filterFields}">
        <option value="#{item.Value}">#{msg[item.Label]}</option>
    </c:forEach>
</select>

遗憾的是,JSF 告诉我该项目没有 Label 或 Value 属性,我几乎不相信。;)

有谁知道如何以这种方式访问​​这个属性?

4

3 回答 3

1

在我看来你应该写:

#{item.value}

而不是#{item.Value},因为标准的 JavaBeans 约定是为属性设置getXyz()getter 。xyz

此外,您为什么不valueChangeListener向 UI 组件提供区域设置选择,然后在其中填充该区域设置的选择项标签。这样您就可以使用标准f:selectItems标签。

于 2009-08-14T17:02:25.500 回答
0

我解决了存储过滤器字段两次的问题。每种语言一次 - 呈现的运行时决策。不是一个很好的,但它的工作原理。无法让 changeListener 运行...

于 2009-08-18T09:04:13.610 回答
0

您也可以这样做,以便您的命令链接重新呈现页面,以便它自动执行您需要的操作。不知道这是否符合您的要求。:)

于 2009-08-18T20:29:21.877 回答