2009-08-14 32 views
0

我在我的一个应用程序中遇到了一点国际化问题。 这个故事是这样的:在没有selectOneMenu的情况下从XHTML访问JSF SelectItem.Label和Value

我有一个数据表显示记录,selectOneMenu以 的顺序选择要过滤的dataTable列。 selectOne为 ,其中带有SelectItems,它们根据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告诉我的项目没有一个标签或值的属性,它 我几乎不敢相信。 ;)

有没有人有一个想法如何访问这个属性这种方式?

回答

0

我解决了存储filterfields两次的问题。每种语言一次 - 渲染的运行时间延迟。不是一个好的,但它的作品。不能让changeListener去...

1

在我看来,你应该写:

#{item.value} 

代替#{item.Value},作为标准的JavaBeans的约定是有getXyz() getter方法xyz财产。

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

+0

thx为答案,我现在可以访问属性。我的哦。 我同意valueChangeListener将是更好的方法 去。我并不十分确定如何将它集成到我的应用程序中。 通常我有一个LanguageSelectioBean,它显示两个标记 ,它们通过commandLinks改变点击的语言环境。 - >可以通过命令链接触发valueChange事件吗? 其次,我的数据表是一个组件,我在我的应用程序的几个 位置中使用。我需要扩展它以使其听取 的valueChanges并重新查询语言文件onValueChange,对不对? thx K – KB22 2009-08-17 06:09:27

0

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

相关问题