1

私は Primefaces 3.5.jar と Hibernate を使用しています。データテーブル行編集リスナーに問題があります。プロジェクトをデバッグすると、onCancel メソッドに入ることができますが、onEdit は起動しません。私のXHTMLコード:

    <f:facet name="header">  
        Workhours
    </f:facet>  

    <p:ajax event="rowEdit" listener="#{workhoursBean.onEdit}" update=":form:messages" />  
    <p:ajax event="rowEditCancel" listener="#{workhoursBean.onCancel}" update=":form:messages" />  



    <p:column headerText="Start" style="width:20%">  
        <p:cellEditor>  
            <f:facet name="output">  
                <h:outputText value="#{workhours.workStart}" />  
            </f:facet>  
            <f:facet name="input">  
                <p:inputText value="#{workhours.workStart}" style="width:100%" label="Year"/>  
            </f:facet>  
        </p:cellEditor>  
    </p:column>

    <p:column headerText="End" style="width:20%">  
        <p:cellEditor>  
            <f:facet name="output">  
                <h:outputText value="#{workhours.workEnd}" />  
            </f:facet>  
            <f:facet name="input">  
                <p:inputText value="#{workhours.workEnd}" style="width:100%" label="Year"/>  
            </f:facet>  
        </p:cellEditor>  
    </p:column>  

    <p:column style="width:6%">  
        <p:rowEditor />  
    </p:column>  

</p:dataTable>

そして私のBeanメソッド:

  public void onCancel(RowEditEvent event) {  
    //do stuff
}
 public void onEdit(RowEditEvent event) {  
    Object oldValue = event.getObject();  
    Object newValue = event.getObject();
    if(newValue != null && !newValue.equals(oldValue)) {  
        FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Cell Changed", "Old: " + oldValue + ", New:" + newValue);  
        FacesContext.getCurrentInstance().addMessage(null, msg);  
    }
}

理由は誰にもわかりますか?

4

2 に答える 2

0

oldValue と newValue は同じオブジェクトであるため、条件 !newValue.equals(oldValue)) は true を返しません。

于 2013-08-12T11:10:58.240 に答える