提问者:小点点

primefaces数据表行编辑器不适用于p:selectManyMenu


我已经为inputtext、autocomplete等组件实现了primefaces roweditor。我试图实现selectmanymenu,但无法获得结果。如果我使用单元格编辑器,那么我需要使用输入和输出值应该引用相同的。这里的selectmanymenu值是列表,而不是单个变量。所以我不知道如何处理。

我想知道用p:cellEditor正确实现p:selectManyMenu。我不确定我们是否也可以这样做。

我已经在stackoverflow和谷歌中搜索过,没有得到任何答案。

请帮帮我。

以下是代码详细信息

<p:dataTable
    value="#{projectViewBean.projectListToEdit}"
    editable="true" var="proj" id="editProjLst">
     <p:ajax event="rowEdit" listener="#{projectEntryBean.onEdit}"/>
     <p:ajax event="rowEditInit" listener="#{projectEntryBean.onRowEditInit}"></p:ajax>
<p:column headerText="Project Status" id="sts">
        <p:cellEditor>
            <f:facet name="output">
                <p:outputLabel value="#{proj.projectStatus}"></p:outputLabel>
            </f:facet>
            <f:facet name="input">
                <p:selectOneMenu
                    value="#{proj.projectStatus}"
                    id="pjstval">
                    <f:selectItems value="#{projectEntryBean.projectStatusList}"
                        id="pjstlst" />
                </p:selectOneMenu>
            </f:facet>
        </p:cellEditor>
</p:column>
<p:column headerText="Phase" id="dbphase">
        <p:cellEditor>
            <f:facet name="output">
                <p:outputLabel value="#{proj.projectPhaseValue}"></p:outputLabel>
            </f:facet>
            <f:facet name="input">
                <p:autoComplete
                    completeMethod="#{projectEntryBean.autoSearchProjectPhase}"
                    value="#{proj.projectPhaseValue}"
                    dropdown="true" scrollHeight="200" emptyMessage="No Phase Found"
                    minQueryLength="1" forceSelection="true"></p:autoComplete>
            </f:facet>
        </p:cellEditor>
    </p:column>
<p:column headerText="Project Manager" id="pjtmgr">
        <p:cellEditor id="pm">
            <f:facet name="output">
                <p:outputLabel value="#{projectEntryBean.pjtView.projectUserList}"></p:outputLabel>
            </f:facet>
            <f:facet name="input">
                <p:selectManyMenu
                    value="#{proj.projectManager}"
                    id="projectmanagerval">
                    <f:selectItems value="#{projectEntryBean.pjtView.projectUserList}"
                        id="pmlst" />
                </p:selectManyMenu>
            </f:facet>
        </p:cellEditor>
    </p:column>
<p:column style="width:32px">
        <p:rowEditor />
    </p:column>
</p:dataTable>

共1个答案

匿名用户

最后,我能够通过使用转换器实现它。这可能对某人有帮助。请查看解决方案

<p:column headerText="Project Manager" id="pjtmgr">
    <p:cellEditor id="pm">
        <f:facet name="output">
            <p:outputLabel value="#{proj.projectManager}">
           <f:converter converterId="vendorConverter"></f:converter>
          </p:outputLabel>
        </f:facet>
        <f:facet name="input">
            <p:selectManyMenu
                value="#{proj.projectManager}"
                id="projectmanagerval">
                <f:selectItems value="#{projectEntryBean.pjtView.projectUserList}"
                    id="pmlst" />
            </p:selectManyMenu>
        </f:facet>
    </p:cellEditor>
</p:column>