Eg:
<p:selectOneMenu value="#{UserBean.country}" id="countryId">
<f:selectItem itemLabel="Japan" itemValue="Japan"/>
<f:selectItem itemLabel="Russia" itemValue="Russia"/>
<f:selectItem itemLabel="India" itemValue="India"/>
<p:ajax listener="#{UserBean.onChangeCountry}" process="@this"/>
</p:selectOneMenu>
像上面一样,我在其他 jsf 页面中有许多其他 selectOneMenu,它们不是排序的形式,我想要一个解决方案,在带有自定义标签的 selectOneMenu 标签周围将按排序顺序显示内容(或者可以建议我们也可以实现的任何其他方式)这)
您不需要自定义标签。
如果是p:selectOneMenu
你可以使用f:selectItems
(复数)并返回一个排序的集合(替换您的个人f:selectItem
标签)。在这种情况下,那就是这样的;
<f:selectItems value="#{view.countries}"/>
Where countries
是吸气剂,getCountries()
,返回一个列表Map<String, String>
根据您的选择排序。
想象一下没有f:selectItems
不过,我们唯一可用的选择是f:selectItem
(单数)- 就像你的例子一样。那么解决方案是使用 JSF 预渲染挂钩并在渲染该部分之前对 JSF 组件进行排序。您可以在此处详细阅读其工作原理;JSF 页面中组件(面板)的可变顺序。在该示例中,有一个列表p:panel
组件在 a 内随机打乱h:panelGroup
。但它可以很容易地应用于这种情况。
使其更加透明并隐藏f:event
标记到页面上的预渲染挂钩,您可以更进一步并定义一个复合组件;
https://stackoverflow.com/tags/composite-component/info
这个复合组件可以只使用一个selectOneMenu
并介绍一个sort
属性,该属性允许您调用如上所述的排序预渲染挂钩,具体取决于是否sort
属性为 true 或 false。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)