请教一个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,我还给你发了消息,结果你现在自己跑来推销了,哈哈
Global site tag (gtag.js) - Google Analytics