p:selectBooleanButtons 在 p:selectOneMenu

问题描述 投票:0回答:0

在我的网络应用程序中,我有属于不同项目的列表。我正在使用 p:selectOneMenu 向用户显示所有可用的搜索。我为 Search 类实现了转换器,它按预期工作。现在,我希望用户能够看到按项目搜索。我决定用 p:repeat 包装 p:selectBooleanButton ,它的值与 List 相关联,这样我就有了每个可用项目的 p:selectBooleanButton。此 selectBooleanButtons 放置在 p:selectOneMenu 的页脚方面,以便用户可以轻松切换这些项目按钮并查看/隐藏他们想要的任何项目的搜索。我采用这种方法是因为我们只有两个固定的项目(或者至少在一段时间内将是唯一的项目)。

问题是,每当包含此 p:selectOneMenu 的容器更新时,selectBooleanButtons 会自动设置为 false,即使当我在 booleanButton 为 false 时切换它,它也会将自己设置为 true 并自动将自己设置回 false。我猜这个值被提交了两次,因为它在 p:selectOneMenu 中。

我只是想要一个很好的调试方法,我尝试在支持 bean getter/setter 方法中设置断点,并观察检查器窗格中的 POST 请求,但这并没有真正解决我的问题。也许我以错误的方式接近它。

SelectOneMenu

                    <p:selectOneMenu
                        label="Quick Access"
                        widgetVar="quickAccessDropDownWidget"
                        style="width: 150px;"
                        class="available-search-list"
                        converter="searchConverter"
                        filter="true"
                        filterMatchMode="contains"
                        alwaysDisplayLabel="true"
                        placeholder="#{not empty deepBean.quickAccessSearchList ? 'Search Name' : 'No Available Searches'}"
                        editable="false"
                        var="searchItem"
                        title="Available Searches for Quick use"> 
                        <f:selectItems value="#{deepBean.quickAccessSearchList}" 
                                       class="test" 
                                       var="search" 
                                       itemLabel="#{search}" 
                                       itemValue="#{search}"
                                       />
                        <p:column style="width: 100%;" class="available-search-list-items">
                            <span class="row-container">
                                <i id="" class="#{searchItem.isPublic ? 'pi pi-globe' : 'pi pi-user'}"/> 
                                <p:outputLabel id="searchName" value="#{searchItem.name}" style="margin-left: 10px;"/>
                                <p:tooltip for="searchName" escape="false" value="#{deepBean.getTooltipInfoForSearch(searchItem)}"/>
                                <p:outputPanel>
                                    <p:commandButton icon="pi pi-pencil" 
                                                     class="btn ui-button" 
                                                     style="margin-left: 20px;"
                                                     process="@this"
                                                     onclick="onClickSearchEdit('#{searchItem.name}')"/>
                                    <p:commandButton icon="fa fa-send" 
                                                     class="btn ui-button-success" 
                                                     style="margin-left: 5px;"
                                                     onclick="onClickSearchQuickRun('#{searchItem.name}')"
                                                     process="@this"
                                                     update="@(.results-view-panel)"/>
                                </p:outputPanel>
                            </span>
                        </p:column>
                        <f:facet name="footer">
                            <p:outputLabel value="Search for:" style="font-style: italic; margin-left: 5px;"/>
                            <p:outputPanel class="project-toggle-btns">
                                <p:repeat id="projectSelect" 
                                          value="#{deepBean.projectList}" 
                                          var="project"
                                          >
                                    <p:selectBooleanButton id="project"
                                                           value="#{project.selected}"
                                                           onLabel="#{project.name}" offLabel="#{project.name}" 
                                                           onIcon="fa fa-check"
                                                           offIcon="fa fa-square-o"
                                                           style="margin: 5px; padding: 5px;" >

                                        <p:ajax listener="#{deepBean.toggleProjectSelection()}"
                                                process="@this"
                                                update="@(.dash-board)"
                                                oncomplete="PF('quickAccessDropDownWidget').show();"/>

                                    </p:selectBooleanButton>
                                    <ui:debug/>
                                </p:repeat>
                            </p:outputPanel>
                        </f:facet>
                    </p:selectOneMenu>
jsf primefaces
© www.soinside.com 2019 - 2024. All rights reserved.