我在会话作用域中定义了一个表单bean,在请求作用域中定义了一个控制器bean。我使用JSF将会话范围的bean注入到请求范围的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、create date和其他属性的新bean。然后,我使用返回的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;
}
}发布于 2009-12-01 01:32:38
你不需要做任何事。这些更改已经反映在“form”bean中。所以你基本上可以继续使用
public void save() {
dataservice.save(form);
}假设dataservice做得足够好。
https://stackoverflow.com/questions/1821122
复制相似问题