2014-10-07 44 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