如何国际化从 JSF 中的数据库接收的 selectOneMenu 下拉项?
How to internationalize selectOneMenu drop down items which recived from DataBase in JSF?
我需要为 selectOneMenu JSF 组件国际化项目。如何处理从数据库接收到的列表?
<p:selectOneMenu id="action" value="#{mapBean.newAction}" style="width:150px">
<f:selectItem itemLabel="Action" itemValue="Empty"
noSelectionOption="false" />
<f:selectItems value="#{mapBean.actions}" />
</p:selectOneMenu>
对于 mapBean.actions 我需要根据所选语言动态更改值
现在我不知道如何实现这个。
据我了解你的问题,你有 "Locale" 属性 的对象列表。并且您想在 selectOneMenu 中仅显示具有指定语言环境的项目。你可以做这样的事情来过滤 selectItems:
<p:selectOneMenu id="action" value="#{mapBean.newAction}" style="width:150px">
<f:selectItem itemLabel="Action" itemValue="Empty"
noSelectionOption="false" />
<f:selectItems value="#{mapBean.actions}"
var="item" itemDisabled="#{item.locale ne 'en'}"/>
</p:selectOneMenu>
并将此添加到 css 到您的页面以不显示禁用的项目:
.ui-selectlistbox-item.ui-state-disabled {
display: none;
}
这是来自this answer
的解决方案
我需要为 selectOneMenu JSF 组件国际化项目。如何处理从数据库接收到的列表?
<p:selectOneMenu id="action" value="#{mapBean.newAction}" style="width:150px">
<f:selectItem itemLabel="Action" itemValue="Empty"
noSelectionOption="false" />
<f:selectItems value="#{mapBean.actions}" />
</p:selectOneMenu>
对于 mapBean.actions 我需要根据所选语言动态更改值 现在我不知道如何实现这个。
据我了解你的问题,你有 "Locale" 属性 的对象列表。并且您想在 selectOneMenu 中仅显示具有指定语言环境的项目。你可以做这样的事情来过滤 selectItems:
<p:selectOneMenu id="action" value="#{mapBean.newAction}" style="width:150px">
<f:selectItem itemLabel="Action" itemValue="Empty"
noSelectionOption="false" />
<f:selectItems value="#{mapBean.actions}"
var="item" itemDisabled="#{item.locale ne 'en'}"/>
</p:selectOneMenu>
并将此添加到 css 到您的页面以不显示禁用的项目:
.ui-selectlistbox-item.ui-state-disabled {
display: none;
}
这是来自this answer
的解决方案