- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
例如:
<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}"/>
在哪里countries
是 setter/getter ,getCountries()
,返回 Map<String, String>
的列表根据您的选择排序。
想象一下没有f:selectItems
尽管如此,我们唯一可用的选择是f:selectItem
(单数)-就像您的示例一样。那么解决方案就是使用 JSF 预呈现 Hook 并在呈现该部分之前对 JSF 组件进行排序。您可以在此处准确阅读其工作原理; Variable order of components (panels) in JSF page .在该示例中,p:panel
的列表组件在 h:panelGroup
中随机排列.不过,它可以很容易地应用于这种情况。
为了让它更透明并隐藏f:event
标记到页面上的预渲染 Hook ,您可以更进一步并定义一个复合组件;
https://stackoverflow.com/tags/composite-component/info
这个复合组件可以只使用 selectOneMenu
并介绍一个sort
允许您调用排序预渲染 Hook 的属性,具体取决于 sort
的值是否为属性为真或假。
关于sorting - 如何对 f :selectItems in each p:selectOneMenu of my application? 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67093299/
我是一名优秀的程序员,十分优秀!