2014-10-07 22 views
6

我正在使用PrimeFaces 5.0.5和GlassFish服务器3.1.2.2。p:selectOneMenu下拉部分滚动并且不保留位置

我在<ui:fragment>里添加了一个selectonemenu,然后它被包含在另一个XHTML页面中。

当我打开选择菜单并使用鼠标滚轮滚动时,面板将随着页面浮动。

最初,我尝试编辑CSS文件,因为我猜测它可能是一个位置问题,但事实并非如此。

然后,我复制了来自展柜的源代码,并且面板在滚动时仍然分裂。

无论是普通的HTML下拉列表和<h:selectOneMenu>都很好,我不知道为什么它不适用于<p:selectOneMenu>

我可以找到一些提到这个问题的帖子,但它们与PrimeFaces的旧版本有关。

问题仍然存在或在505中修复?如果是的话,我该如何解决这个问题?

任何反馈和意见,赞赏。

非常感谢。

p:selectOneMenu dropdown not attached to the component inside a dialog

<ui:fragment 
xmlns="http://www.w3.org/1999/xhtml" 
xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:f="http://java.sun.com/jsf/core" 
xmlns:c="http://java.sun.com/jsp/jstl/core" 
xmlns:p="http://primefaces.org/ui"> 
<h:panelGroup 
    id="cPanel" 
    layout="block" 
    styleClass="contentArea product"> 
    <div class="mainColumnContainer"> 
     <div class="mainColumn"> 
      ... 
      <div id="try"> 
      <form> 
         ... 
       <h:panelGroup> 
       <h:form> 
       <p:messages autoUpdate="true" /> 

       <h:panelGrid columns="2" style="margin-bottom:10px" cellpadding="5"> 
        <p:outputLabel for="console" value="Basic:" /> 
        <p:selectOneMenu id="console" value="#{selectOneMenuView.console}"> 
         <f:selectItem itemLabel="Select One" itemValue="" /> 
         <f:selectItem itemLabel="Xbox One" itemValue="Xbox One" /> 
         <f:selectItem itemLabel="PS4" itemValue="PS4" /> 
         <f:selectItem itemLabel="Wii U" itemValue="Wii U" /> 
        </p:selectOneMenu> 

        <p:outputLabel for="car" value="Grouping: " /> 
        <p:selectOneMenu id="car" value="#{selectOneMenuView.car}"> 
         <f:selectItem itemLabel="Select One" itemValue="" /> 
         <f:selectItems value="#{selectOneMenuView.cars}" /> 
        </p:selectOneMenu> 

        <p:outputLabel for="city" value="Editable: " /> 
        <p:selectOneMenu id="city" value="#{selectOneMenuView.city}" effect="fold" editable="true"> 
         <f:selectItem itemLabel="Select One" itemValue="" /> 
         <f:selectItems value="#{selectOneMenuView.cities}" /> 
        </p:selectOneMenu> 

       </h:panelGrid> 
      ... 

问候, REK

+0

我从来没有关注过它,但即使在PF 5.1中也是如此。 – mrganser 2014-10-07 09:59:26

+0

谢谢你的评论,mrganser。我愿意问你一个问题。你把selectonemenu放在对话框里面还是在灯箱里面?看起来,这是问题如何触发的。谢谢。 – RekLun 2014-10-07 21:19:39

+0

就我而言,只有布局会触发问题,我只是将'p:layout'的属性'fullPage'更改为false,并且问题消失了,也许我可以明天彻底测试这个问题并给你一个答案,你有布局呢? – mrganser 2014-10-07 22:00:11

回答

13

的事情是,这些浮动的div是绝对定位创建的,当你有布局或对话或东西,打破了网页的流量,这些p:selectOneMenu“面板”保持在相同的绝对位置,即使您滚动布局或容器,因为默认情况下它们会附着到主体。

所以一个解决这将是将其连接到自己,使绝对面板出现在页面的流量旁边的选择,并不会与这些“内部scrollings”移动方式:

<p:selectOneMenu id="console" value="#{selectOneMenuView.console}" appendTo="@this"> 
    <f:selectItem itemLabel="Select One" itemValue="" /> 
    <f:selectItem itemLabel="Xbox One" itemValue="Xbox One" /> 
    <f:selectItem itemLabel="PS4" itemValue="PS4" /> 
    <f:selectItem itemLabel="Wii U" itemValue="Wii U" /> 
</p:selectOneMenu> 

使用属性appendTo

将覆盖图追加到由搜索表达式定义的元素。 默认为文档正文。

+0

太棒了!有用。非常感谢你! – RekLun 2014-10-09 22:14:31

4

您可以使用panelStyle =“position:fixed;”在selectOneMenu