2012-08-08 2 views
0

건배 :)를 반환, 내가 primefaces이 데이터 테이블 rowediting을 전시 구현하기 위해 시도한 primefaces에서 초보자와 아약스primefaces는 이전 데이터를

스피 사용 primefaces 3.4, 글래스 피쉬 3.1, jsf2.0 및 EJB 3. IAM. 그러나 업데이트 된 값을 데이터 테이블에 유효성을 검사하면 이전 값이됩니다. event.getObject()는 항상 이전 값을 :(얻을 그것의 게터처럼

public void onEdit(RowEditEvent event) { 
    this.session.updateContact((Contacts) event.getObject()); 
    FacesMessage msg = new FacesMessage("Edition contact: ", ((Contacts) event.getObject()).getDisplayname()); 

    FacesContext.getCurrentInstance().addMessage(null, msg); 
} 

(연락처) :.

<h:form id="form"> 
<p:growl id="messages" showDetail="true"/> 
<p:dataTable var="item" value="#{jSFMBean.allContacts}" id="contactList" editable="true"> 
    <p:ajax event="rowEdit" listener="#{jSFMBean.onEdit}" update="@this :form:messages" /> 
    <p:ajax event="rowEditCancel" listener="#{jSFMBean.onCancel}" update=":form:messages" /> 
     <p:column headerText="EMAIL" style="width:125px"> 
        <p:cellEditor> 
         <f:facet name="output"> 
          <h:outputText value="#{item.email}" /> 
         </f:facet> 
         <f:facet name="input"> 
          <p:inputText value="#{item.email}" label="EMAIL"/> 
         </f:facet> 
        </p:cellEditor> 
       </p:column><p:column headerText="Options" style="width:50px"> 
        <p:rowEditor /> 
       </p:column> 
    </p:dataTable> 
<h:outputText value="#{jSFMBean.selectedContact.displayname}" /> 

방법은 다음과 같습니다이 내 코드입니다 데이터베이스에 아약스를 업데이트하기 전에 먼저 데이터 테이블 fireup.

내가 뭘 잘못 했니?이 문제를 해결해 주셔서 감사합니다.

답변

1

현재 개체 내의 값을 편집 중입니다. 거기에 값을 업데이트하려면 데이터베이스를 다시 호출해야합니다.

+0

그는 FacesMessage가 이전 값을 표시한다는 것을 의미한다고 생각합니다. – BigJ

0

아마도 문제는 백킹 빈에 있습니다. backing 빈에 @ManagedBean (javax.faces.bean.ManagedBean) 대신 @Named 주석을 사용한 경우 이러한 종류의 문제가 발생합니다. 간단히

@ManagedBean (이름 = "YourBeanName")로

@Named (값 = "YourBeanName")

을 대체

1

보인다 때마다 당신을 그 dataTable이 데이터베이스에서 필요하므로 event.getObject()가 항상 이전 값을 반환합니다. 데이터 테이블의 getter에서 t o add :

if (allContacts== null){ 

     allContacts= (List<Contacts>) yourservice.getAll(); /*this refers to the function that get the list from the database*/ 

    } 

    return allContacts; 

나는 당신을 도울지도 모른다.

관련 문제