JSF 2 view bean-компонент не обновляется, когда действие вызывается во второй раз - PullRequest
1 голос
/ 05 марта 2012

У меня есть видовой массив arrayList как бин.Это используется для отображения редактируемых столбцов dataTable.Когда страница отображается изначально, и я пытаюсь обновить содержимое таблицы, обновление работает нормально, однако, когда я пытаюсь обновить любой столбец во второй раз, измененные значения не отражаются в bean-компоненте arrayList (проверено в методе действия с использованием breakточка).Метод действия также является управляемым компонентом с областью представления.

 <managed-bean>
    <managed-bean-name>financialListBean</managed-bean-name>
    <managed-bean-class>java.util.ArrayList</managed-bean-class>
    <managed-bean-scope>view</managed-bean-scope>
</managed-bean>

Ниже приведен код для dataTable

        <h:form id="myform">
    <h:dataTable id="financialListBean1"
    value="#{financialListBean}" var="varfinancialListBean"
    styleClass="dataTableEx" headerClass="headerClass"
    footerClass="footerClass"
    rowClasses="rowClass1, rowClass2"
    columnClasses="columnClass1" border="0" cellpadding="2"
    cellspacing="0">
    <h:column id="columnEx17">
    <h:selectBooleanCheckbox styleClass="inputRowSelect"
    id="rowSelect3" 
    value="#{varfinancialListBean.rowSelected}"></h:selectBooleanCheckbox>
    <f:facet name="header"></f:facet>
    </h:column>
    <h:column id="amount1column">
    <f:facet name="header">
    <h:outputText styleClass="outputText" value="Amount"
    id="amount1text"></h:outputText>
    </f:facet>
    <h:inputText styleClass="small8Input" id="amount1"
    value="#{varfinancialListBean.amount}" onkeypress="return only5DigitsEntry(this, event);" onkeyup="return checkRequiredFieldsForUpdateFinancialBtn(this.form, event);">
    </h:inputText>
    </h:column>
    <h:column id="type1column">
    <h:selectOneMenu styleClass="selectOneMenu" id="menu1" value="#{varfinancialListBean.type}">
    <f:selectItem itemLabel="M" itemValue="M" />
    <f:selectItem itemLabel="Y" itemValue="Y" />
    <f:selectItem itemLabel="Z" itemValue="Z" />
    <f:selectItem itemLabel="O" itemValue="O" />
    <f:selectItem itemLabel="S" itemValue="S" />
    </h:selectOneMenu>
    <f:facet name="header">
    <h:outputText styleClass="outputText" value="Type"
    id="type1text"></h:outputText>
    </f:facet>
    </h:column>
    <h:column id="recDate1column">
    <f:facet name="header">
    <h:outputText styleClass="outputText"
    value="Recieve Date" id="recDate1text"></h:outputText>
    </f:facet>
    <h:inputText styleClass="outputText" id="recDate1"
    value="#{varfinancialListBean.recDate}" 
    onclick="getClock($(this).attr('id'))" > 
    <f:convertDateTime pattern="MMM d, yyyy"/>
    </h:inputText>
    </h:column>
    </h:dataTable>
    <h:commandButton type="submit"
    value="Update Financial Information"
    styleClass="commandExButton" id="updateFinancialBtn"
    action="#{pc_SocialServicesView.doFinancialUpdateBtnAction}">
    <f:param name="mrn" value="#{pc_SocialServicesView.mrn}" />
    </h:commandButton>
    </h:form>

Метод действия:

public String doFinancialUpdateBtnAction() {

    System.out.println("I am at doFinancialUpdateBtnAction");


    try{
        if(mrn.length()==0){
            mrn=getFacesContext().getExternalContext().getRequestParameterMap().get("mrn");
        }
             setFinancialListBean(dba.updateFinancialAsistance
      (getFinancialListBean(), mrn));
        setErrorMsgBean("Updated successfully ...");
        doInit(mrn);
    }catch (Exception e) {
     System.out.println("There is an exception at      doFinancialUpdateBtnAction");
        Log.out.error("Error in doFinancialUpdateBtnAction: "+e);
        setErrorMsgBean("No record was updated ...");
        e.printStackTrace();
    }

    return "";
}
...