Jsf 2 第二次调用操作时,JSF2视图作用域bean未更新
我有一个视图范围的arrayList作为bean。用于显示dataTable的可编辑列。当页面最初显示并且我尝试更新表内容时,更新工作正常,但是当我第二次尝试更新任何列时,更改的值不会反映在arrayList bean中(在使用断点的操作方法中验证)。action方法也是一个具有视图范围的托管beanJsf 2 第二次调用操作时,JSF2视图作用域bean未更新,jsf-2,facelets,Jsf 2,Facelets,我有一个视图范围的arrayList作为bean。用于显示dataTable的可编辑列。当页面最初显示并且我尝试更新表内容时,更新工作正常,但是当我第二次尝试更新任何列时,更改的值不会反映在arrayList bean中(在使用断点的操作方法中验证)。action方法也是一个具有视图范围的托管bean <managed-bean> <managed-bean-name>financialListBean</managed-bean-name>
<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>
您的行动方法是第二次输入的吗?如果没有,客户端是否有任何错误(javascript错误)?是的,在我第二次设置断点以验证bean内容时调用了action方法。我没有看到任何javascript错误。当我第一次访问页面时,我可以进行更新@MatthandySomes ViewScoped bean的行为类似于RequestScoped bean。您是否可以调试以检查您的bean是否在提交期间/之后重新创建?我假设如果重新创建bean,它将为null,而不是以值前置?你能告诉我如何验证它是否被重新创建吗@Matthandyth这是一个有点不同寻常的设计。为什么将ArrayList定义为bean而不是
pc_SocialServicesView
bean的字段?
<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 "";
}