【问题标题】:Accessing JSF SelectItem.Label and Value from XHTML without selectOneMenu在没有 selectOneMenu 的情况下从 XHTML 访问 JSF SelectItem.Label 和 Value
【发布时间】:2010-11-19 15:58:25
【问题描述】:

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

我有一个显示记录的数据表和一个按顺序排列的 selectOneMenu 选择要过滤的数据表的列。 selectOne 是 提供根据实际语言环境填充的 SelectItems 在 DataRefresh 时间支持 bean。

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

我当然希望改变这一点。

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

这是我尝试过的

<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 属性,这 我几乎不相信。 ;)

有人知道如何以这种方式访问​​这些属性吗?

【问题讨论】:

    标签: java jsf foreach selectonemenu


    【解决方案1】:

    在我看来你应该写:

    #{item.value}
    

    而不是 #{item.Value},作为标准 JavaBeans 约定是为 xyz 属性使用 getXyz() getter。

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

    【讨论】:

    • 谢谢回答,我现在可以访问这些属性了。我的哦。我同意 valueChangeListener 会是更好的选择。我不完全确定如何将它集成到我的应用程序中。实际上,我有一个 LanguageSelectioBean,它显示两个标志,通过 commandLinks 在单击时更改区域设置。 --> 命令链接可以触发 valueChange 事件吗?其次,我的数据表是我在应用程序的多个位置使用的组件。我需要扩展它以使其侦听 valueChanges 并重新查询 onValueChange 的语言文件,对吗?谢谢K
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-02
        • 2014-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-01
        • 1970-01-01
        • 2021-12-05
        相关资源
        最近更新 更多