请教一个seam的组件scope的问题
terranhao
2008-07-17
我用的seam pojo,当我把一个backingBean的范围设置为scopeType.event的时候
@Name(simple) @Scope(value=ScopeType.EVENT) public class Simple{ private User user; public User getUser(){return user;} public User setUser(User u){user=u;} public String update(){ user=new User(); user.setId(1); return "/update.xhtml"; } } update.xhtml: <h:outputText value="#{simple.user.id}"> 我却得不到user的id值,并且我发现user实际上是null; 在#{simple.user.id}这行实际上初始化了一个新的simple实例,按道理说scopeType.event应该在整个request里都产生作用啊, 请教大家这是怎么一回事情,感谢您的答复 同时请问大家seam的组件几个不同的scope是什么意思,session,application很清楚,但是page,event,conversation就有点问题了.谢谢大家执教 |
|
Anatorian
2008-07-18
问题就在于JSF的POST -> Redirect -> GET 的工作方式。提交表单后,服务器返回的是一个302重向到update.xhtml,而这个时候,这个POST的request已经结束了。然后你的浏览器会根据302重定向指定的地址去用GET访问update.xhtml,而这个时候当然是一个新的request的,所以又是一个新的event scope了。前一个event scope的 simple已经完蛋了, 你看到的是新建的event scope。 看看我的blog,你会有收获的: http://www.sulong.info
|
|
SSailYang
2008-07-18
JavaBean 默认的 scope 就是 event,所以设置可以省略。POST -> Redirect -> GET 这种模式,应该使用 conversation scope,如果没有 seam 默认会按临时 conversation 处理。
|
|
terranhao
2008-07-19
谢谢楼上各位了。
|
|
terranhao
2008-07-19
涂零实验室,哈哈,我就是那天搜索到了你的blog,我还给你发了消息,结果你现在自己跑来推销了,哈哈
|