我是靠谱客的博主 飘逸红酒,最近开发中收集的这篇文章主要介绍primefaces的selectonemenu的奇怪的规定,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

<p:selectOneMenu>
<f:selectItems value="beanproperty"/>
<p:column>
</p:column>
</p:selectOneMenu>
当你用到p:column来在selectOneMenu中创建列的时候,就会发现这个控件的column是不完善的,首先,beanproperty不能是字符串数组,比如
String[] str={"1","2"}
<p:selectOneMenu>
<f:selectItems value="class.str"/>
<p:column>
</p:column>
</p:selectOneMenu>
这样绑定之后,无法创建列,此其一
如果你绑定了List类型的变量,然后你这样指定格式
<p:selectOneMenu var="y">
<f:selectItems value="beanproperty" var="x" itemLabel=#{x.name} itemValue="#{x.name}"/>//name属性为字符串
<p:column>
#{y.name}
</p:column>
</p:selectOneMenu>
这样的代码,一样不生效,不会创建列,和没指定column一样
如果你这样指定
<p:selectOneMenu>
<f:selectItems value="beanproperty" var="x" itemLabel=#{x.name} itemValue="#{x}"/>//name属性为字符串
</p:selectOneMenu>
如果你这样指定,那么你会看到下拉列表显示的是每个变量的toString()返回值
<p:selectOneMenu var="y">
<f:selectItems value="beanproperty" var="x" itemLabel=#{x.name} itemValue="#{x}"/>//name属性为字符串
</p:selectOneMenu>
但是如果你这样指定,仅仅加个var="y",你会发现,下拉列表无法显示数据了,就是点了那个下拉按钮,下拉列表不会正确出现,就显示一条很小的白框框
<p:selectOneMenu var="y">
<f:selectItems value="beanproperty" var="x" itemLabel=#{x.name} itemValue="#{x}"/>//name属性为字符串
<p:column>
#{y.name}
</p:column>
</p:selectOneMenu>
但是如果你这样指定,才会出现你要的效果,列正确的被创建,但是,这一切仅仅是在火狐浏览器中。。。。。
如果你在IE下,就可能会出现错误,为什么说可能,是因为有时候正确,错误现象有,下拉列表偏离正确位置非常远,下拉列表非常宽,基本占据真个剩余空间
我认为,这是primefaces的一个BUG,目前primefaces5.1社区版,没有修正这个错误。
所以,如果需要用到下拉列表,那就别用column创建列了。

最后

以上就是飘逸红酒为你收集整理的primefaces的selectonemenu的奇怪的规定的全部内容,希望文章能够帮你解决primefaces的selectonemenu的奇怪的规定所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部