2
我有一个在会话范围中定义的表单bean和一个在请求范围中定义的控制器bean。我正在使用JSF将会话作用域bean注入到请求作用域bean中。帮我理解JSF托管bean生命周期
<managed-bean>
<managed-bean-name>Controller</managed-bean-name>
<managed-bean-class>
com.mycomp.Controller
</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>form</property-name>
<value>#{Form}</value>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>Form</managed-bean-name>
<managed-bean-class>com.mycomp.form</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
的问题是,当我保存的形式我的持久层返回与ID的新豆,创建日期和其他属性进行设置。然后我使用返回的bean设置本地bean。我是否也应该在此时设置会话作用域bean?
class Controller {
private Form form;
// getters and setters here
...
public void save() {
Form f = dataservice.save(form);
this.form = f;
// This
//FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("Form", form);
// or this?
//FacesContext.getCurrentInstance().getApplication().createValueBinding(
// "#{Form}").setValue(
// FacesContext.getCurrentInstance(), form;
}
}
我需要说明用户在单击保存后仍保留在同一页面上,我希望看到数据服务返回的值。表单上的“创建日期”和“上次修改日期”字段绑定到Controller.form.createDate等。 – Future429 2009-11-30 19:18:12