Seam的页面逻辑实现

下面我们看一个简单的Component的定义的例子,通过上述代码,大家可以看到有两句Annotation定义——Name和Scope。

除此之外,并没有什么特别的地方,所以正是这两个Annotation使HelloWB成为一个可以被SEAM的运行时识别的Component。

Name用于定义Component的名称,是必须的;Scope则用于定义Component的作用域,是可选的,默认值为短对话(ShortConversation)。 在本例中,HelloWB的作用域是Page。

Page与Conversation都Seam的杰作,在标准JSF是没有的。 而且,这两个作用域是比较常用,我个人比较热衷于Page作用域,所以在这里先谈一下Page。

正如我前面所说JSF对状态的依赖比较强...,造成我们对Session的依赖,引起了很多问题。

Page很大程度上解决了这个问题,它可以跨请求存活,只要该请求不是新的。

什么请求是新的请求呢?要回答这个问题,先要搞清楚什么是POST-BACK。 学过的朋友可能对POST-BACK概念比较熟悉,没学过的话不要紧。 POST-BACK并不是什么深奥的东西,所谓的POST-BACK,就是指用户按下页面上的某个按钮或表单控件,将表单数据发送回到页面自身的URL。

相反,如果用户是通过在地址栏中输入URL,或通过点击页面的链接访问页面,则这个请求就是一个NON-POST-BACK的请求,也即是一个新的请求。 另外,一些JSF专家都推荐一种叫BackingBean的风格。 所谓的BackingBean就是指一个JSF页面对应一个ManagedBean处理页面逻辑。 Page作用域非常适用这种情况,因为它是与页面一起序列化(Serialize)到浏览器或保存在Session中。

如果大家还是不太明白的话,请看以下的XHTML代码。 发布运行上述代码,大家可以看如下页面。

上一篇: 都市行 V1.3.0 Beta 发布

下一篇:没有了