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创建列了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值