SelectOneMenu标签被“覆盖”

时间:2013-10-30 14:07:45

标签: jsf primefaces selectonemenu

这可能是一个CSS问题,但我自己无法理解这个原因。

我经常发现一些选择行为与图片中的一样:

enter image description here

下拉字段已“覆盖”。 然后我点击它,选择一个值......它开始正确显示。

我正在使用Cupertino主题。

如果我分析生成的来源,这就是我找到的内容:

<div class="ui-helper-hidden-accessible">
   <input id="carrello:formCarrello:j_idt165_focus" name="carrello:formCarrello:j_idt165_focus" type="text">
</div>

<label id="carrello:formCarrello:j_idt165_label" class="ui-selectonemenu-label ui-inputfield ui-corner-all" style="width: 0px;">
   Seleziona...
</label>

标签有“width:0px;”。如果我将其删除,菜单会正确显示。

好但是......我没有添加该属性。为什么Primefaces会添加它?

修改

第一个菜单的来源:

<p:selectOneMenu value="#{posController.rigaVendita.codiceIva}" effect="fade" converter="codiceIvaConverter">  
                                <f:selectItem itemLabel="Seleziona..." itemValue="" />  
                                <f:selectItems value="#{posController.codiciIva}" var="ci" itemLabel="#{ci.codice}" itemValue="#{ci}" />  
                            </p:selectOneMenu>  

所有浏览器都存在同样的问题。 它不是css兼容性问题,故障是“0px”宽度属性!

3 个答案:

答案 0 :(得分:1)

好的,我终于找到了造成这个错误的原因!

我在selectOneMenu标签上遇到了同样的问题。 这是因为我使用了默认的前向页面导航,这就是为什么在某些页面组件工作而不在其他页面中的原因 实际上,当网址与网页不匹配时,它无法正常工作。

解决方案:在commandLink或commandButton的action属性中使用“?faces-redirect = true”连接视图ID

这可以提供帮助:

PrimeFaces谷歌地图组件<p:gmap>出现同样的问题,如果你想使用它还需要使用重定向

(还有一个问题:如果你使用模板,你必须放 template.xhtml中的<script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>,请参阅(primefaces GMmap inside a dialog not rendering))

修改

显然没关系: PrimeFaces不支持ajax请求中的基于前向的导航,您需要重定向或将ajax设置为false。 http://primefaces.org/faq.html

答案 1 :(得分:0)

我遇到了同样的问题。我想这是一个表面错误。我的解决方案是覆盖该元素的零宽度 - 只需将此代码添加到CSS文件中:

.ui-selectonemenu-label{
   width: 100%!important;
}

答案 2 :(得分:0)

我遇到了同样的问题,解决方案包括在这种情况下编写selectOneMenu的css,对应两个选择器,如下所示:

.ui-selectonemenu .ui-selectonemenu-trigger{
    width: auto !important;
    padding-top: 0.4em;
}

.ui-selectonemenu{
    padding-right: 0px !important;
}

See the image before correction

See the image after correction