2

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

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

在此处输入图像描述

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

我正在使用库比蒂诺主题。

如果我分析生成的源代码,我会发现:

<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>

标签有“宽度: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”宽度属性!

4

3 回答 3

1

好的,我终于找到了导致错误的原因!

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

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

这可以帮助:

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

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

编辑

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

于 2014-04-04T10:11:01.713 回答
0

我刚刚遇到了同样的问题。我猜这是primefaces的错误。我的解决方案是覆盖该元素的零宽度——只需将此代码添加到您的 CSS 文件中:

.ui-selectonemenu-label{
   width: 100%!important;
}
于 2014-04-02T20:56:59.380 回答
0

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

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

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

查看校正前的图像

查看修正后的图像

于 2016-12-15T03:20:44.960 回答