primefaces datatable rowEditor不适用于p:selectManyMenu

时间:2015-12-23 12:46:31

标签: jsf jsf-2 primefaces

我为inputtext,autocomplete等组件实现了primefaces roweditor。我试图为selectmanymenu实现但无法得到结果。如果我使用单元格编辑器然后我需要使用输入和输出值应该参考相同。这里selectmanymenu值将是列表而不是单个变量。所以我不确定如何处理它。

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

我在stackoverflow和google中搜索过,没有得到任何答案。

请帮帮我。

以下是代码详情

<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 个答案:

答案 0 :(得分: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>