2012-12-05 2 views
3

저는 Primefaces 3.5 2012 년 5 월 5 일 SNAPSHOT을 Mojarra 2.1.14 및 Tomcat 7.0.33과 함께 사용하고 있습니다.Primefaces 3.5 + OmniFaces 1.3 SelectOneMenu의 SelectItemsIndexConverter 문제

ah : selectOneMenu에 표시된 모델/엔티티 클래스가있는 POJO 객체에 셀 내 편집 모드 (행이 아님)를 사용하는 경우 celleditevent 값으로 '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> 
+0

'SelectItemsIndexConverter'을 사용하지 않을 때 예상대로 작동한다는 것을 암시합니까? – BalusC

+0

번호 변환기없이 간단한 문자열 배열 selectonemenus 잘 작동합니다. – javaMS

+0

효과가있을 때 항목 값과 항목 라벨에 동일한 문자열 값을 사용 했습니까? 이 모양은 옵션 레이블 대신 편집 후에 옵션 값이 다시 표시되는 PrimeFaces 버그와 유사합니다. 이것은 OmniFaces 변환기로 인한 것이 아닙니다. – BalusC

답변

5

나는 그것을 재현 할 수있다. PrimeFaces의 버그입니다. 이 문제는 변환기와 관련이 없습니다. 이 문제는 "unedit"다음에 선택한 옵션의 레이블 대신 선택한 옵션의 값을 잘못 다시 표시하는 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들에 report에 좋습니다.

+0

감사합니다. http://code.google.com/p/primefaces/issues/detail?id=4971에 신고했습니다. 노력을 감사하십시오. – javaMS

+0

Primefaces 문제 추적기에서 본 의견을 바탕으로 Primefaces 팀이이 문제를 해결하기를 원합니다. Javascript를 수정해야한다는 아이디어가 있습니까? 나는 그것을 조사하려고했지만 어떤 코드가 이것을 일으키는 지 이해하지 못했습니다. – javaMS