p:selectOneMenu 下拉部分滚动并且不停留在原位

2024-02-24

我正在使用 PrimeFaces 5.0.5 和 GlassFish 服务器 3.1.2.2。

我在 a 中添加了一个 selectonemenu<ui:fragment>然后将其包含在另一个 XHTML 页面中。

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

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

然后,我从展示柜复制了源代码,滚动时面板仍然分裂。

纯 HTML 下拉列表和<h:selectOneMenu>都很好,我不知道为什么它不能用<p:selectOneMenu>.

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

问题是否仍然存在或已在 505 中解决?如果是,我该如何解决这个问题?

如有任何反馈和评论,我们将不胜感激。

非常感谢。

p:selectOneMenu 下拉列表未附加到对话框内的组件 https://stackoverflow.com/questions/15286454/pselectonemenu-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>
            ...

问候, 雷克


问题是这些浮动 div 是通过绝对定位创建的,当您有布局或对话框或破坏页面流程的东西时,这些p:selectOneMenu即使您滚动布局或容器,“面板”仍保持在相同的绝对位置,因为它们默认附加到主体。

因此,解决此问题的一种方法是将它们附加到自身,以便绝对面板出现在页面流中的选择旁边,并且不会随着这些“内部滚动”而移动:

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

将叠加层附加到搜索表达式定义的元素。 默认为文档正文。

如果您在对话框中使用它,则面板可以按对话框高度进行切割,因为它的样式是overflow: hidden。所以另一个解决方案是应用position:fixed,你可以这样做:

panelStyle="position: fixed;"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

p:selectOneMenu 下拉部分滚动并且不停留在原位 的相关文章

随机推荐