3

Mojarra 2.1.14およびTomcat 7.0.33で、Primefaces 3.5 2012年12月5日のスナップショットを使用しています。

オブジェクトをクリックしてから 'click他のオブジェクトをクリックすると、前のオブジェクトのラベルではなくその値が表示されます。ページをリロードすると、ラベルの値が表示されるため、これは「表面的な」ものにすぎません。

<p:dataTable id="insurancepolicyTable" var="insurancepolicy" widgetVar="insurancepolicyList" value="#{insurancepolicybean.objectList}" paginator="true" rows="15" paginatorPosition="bottom" paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" currentPageReportTemplate="#{text['table.insurancepolicy.filter.count']}" rowsPerPageTemplate="15,25,50,100" emptyMessage="#{text['table.insurancepolicy.filter.notfound']}" filteredValue="#{insurancepolicybean.filteredObject}" editable="true" editMode="cell" cellEditEvent="click" draggableColumns="true" rowKey="#{insurancepolicy.id}" > 


               <p:column id="branchColumn" headerText="#{text['label.branch']}" sortBy="#{insurancepolicy.branch.name}" filterBy="#{insurancepolicy.branch.name}" filterMatchMode="contains">  
                <p:cellEditor>  
                    <f:facet name="output">  
                        <h:outputText value="#{insurancepolicy.branch.name}" />  
                    </f:facet> 
                    <f:facet name="input">  
                        <div  class="ui-inputfield ui-inputtext ui-widget ui-state-default ui-corner-all">
                            <p:selectOneMenu id="branchselectinsurancepolicylist" value="#{insurancepolicy.branch}" styleClass="customSelect" converter="omnifaces.SelectItemsIndexConverter">                      
                                <f:selectItems value="#{insurancepolicybean.branchList}" var="branch" itemLabel="#{branch.name}" itemValue="#{branch}" />                    
                            </p:selectOneMenu>    
                        </div>
                    </f:facet> 
                </p:cellEditor>    
            </p:column>   
            <p:ajax event="cellEdit" listener="#{insurancepolicybean.onEdit}" update="@form" />
            <pe:resetInput event="cellEdit" for="@form" />

        </p:dataTable>  
4

1 に答える 1

5

再現できます。これは PrimeFaces のバグです。この問題は、コンバーターには関係ありません。この問題は、PrimeFaces 固有の JavaScript コードが原因で発生します。このコードは、「編集解除」後に選択したオプションのラベルではなく、選択したオプションの値を誤って再表示します。

これは、次のように簡単に再現できます。

<p:selectOneMenu value="#{insurancepolicy.branchAsString}">                      
    <f:selectItems value="#{insurancepolicybean.branchMap}" />
</p:selectOneMenu>

private Map<String, String> branchMap;

@PostConstruct
public void init() {
    branchMap = new LinkedHashMap<String, String>();
    branchMap.put("branch label 1", "branch value 1");
    branchMap.put("branch label 2", "branch value 2");
    branchMap.put("branch label 3", "branch value 3");
}

PrimeFaces の人に報告することをお勧めします。

于 2012-12-05T18:25:56.483 に答える