使用roweventedit的event.getObject()将旧值发送给bean

时间:2017-07-10 15:47:49

标签: jsf primefaces jsf-2

我有一个数据表,我使用onRowEdit事件将字段的值更新为null,但它始终显示以前保持的值。我可以将字段值更新为除null之外的任何内容。我在论坛中查找解决方案但找不到它。请帮忙。非常感谢提前。

下面是我的xhtml:

<p:dataTable id="dtable" var="glAcctRefRecord"
        value="#{acctBean.glAcctRefRecords}" editable="true"
        paginator="true" rows="10" paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 

        >
        <p:ajax event="rowEdit" listener="#{acctBean.onRowEdit}" update=":dtableform:msgs" resetValues="true"/>
        <p:ajax event="rowEditCancel" listener="#{acctBean.onRowCancel}" update=":dtableform:msgs"/>


        <p:column headerText="Unamortized Balance GL Account Number" width="65">
                        <p:cellEditor>
                            <f:facet name="output">
                                <h:outputText value="#{glAcctRefRecord.acctNbr}" />
                            </f:facet>
                            <f:facet name="input">
                                <h:inputText id="formUnamBalAcctNbr" label="Account Number"
                                    value="#{glAcctRefRecord.acctNbr}" maxlength="6"
                                    validatorMessage="Account Number is Numeric of lenghth '6'">
                                    <f:validateLength minimum="6" maximum="6" />
                                    <f:validateRegex pattern="[0-9]*" />
                                </h:inputText>
                                <h:message for="formAcctNbr" style="color:red" />
                            </f:facet>
                        </p:cellEditor>
                    </p:column>

以下是我的AcctBean:

@ManagedBean(name = "AcctRefMBean")
@ViewScoped
public class GlAcctRefMBean implements Serializable {
      private static final long serialVersionUID = 1L;

    private String acctgStream;
    private String acctNbr;
    private AcctRefTo acctRefRecord;
    private List<GlAcctRefTo> glAcctRefRecords;

@PostConstruct
    public void init() {
        acctRefRecords = jetSessionFacadebean.getacctgRefByAcctgStreamCode(
                acctgStream, acctNbr);
    }

public void updateRecord(GlAcctRefTo to) {
        jetSessionFacadebean.updateGlAccntRef(to);
    }

    public void onRowEdit(RowEditEvent event) {
     AcctRefTo to = (AcctRefTo ) event.getObject();


    FacesContext facesContext = FacesContext.getCurrentInstance();
    HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false);
    String userId = (String) session.getAttribute(WebAppConstants.CURRENT_USER_ID);
    if (userId == null) {
        userId = WebAppConstants.DEFAULT_CURRENT_USER_ID;
    }   
    to.setUpdatedByUserID(userId);
    updateRecord(to);
    FacesMessage msg = new FacesMessage("Reference Data Updated for Account#" + to.getAcctNbr());
    FacesContext.getCurrentInstance().addMessage("null", msg);
}

以下是我的目标:

public class AcctRefTo implements Serializable {

   private String acctNbr;


    public String getAcctNbr() {
        return acctNbr;
    }


    public void setAcctNbr(String acctNbr) {
            this.acctNbr= acctNbr;
    }

}

0 个答案:

没有答案