快速业务通道

Seam - 无缝集成JSF,第2部分: 借助Seam进行对话 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
责将当前行数据注入支持 bean 的实例变量,但是它不是在执行该操作方法之后填充数据,使其可用于随后的视图。为此,必须提取所选的值。

您已经看到一种注入形式,即 @DataModel 注释向要呈现的视图公开一个对象集合。@DataModel 注释对单个对象实例的补充是 @Out 注释。@Out 注释仅仅获取该属性,并使用该属性自己的名称向变量解析器公开其值。默认情况下,每次激活时,@Out 注释都需要非 null 值。因为并非总是存在课程选择,如第一次显示课程列表时,所以必须将所需的注释标记设置为 false,以表明该提取是有条件的。

默认情况下,@Out 注释反映了用于确定上下文变量名称的属性名称。如果您认为更合适的话,可以选择为提取的变量使用不同名称。因为课程数据将被提取到 conversation 作用域,并且可能在后续的一些请求中使用,所以该名称的 “所选” 特征失去了原来的意义。在这种情况下,最好使用实体本身的名称。因此,selectedCourse 属性的推荐注释为 @Out(value="course", required=false)。

可以在新页面上显示课程详细内容,也可以显示在同一页面的表格下面。为了演示的目的,在同一页面显示详细内容,同时限制要构造的视图数目。要在另一个页面中访问提取的变量,不需要额外的工作或特殊技巧。

修订过的支持 bean

与 该支持 bean 的上一个版本 的差别不大,因此,清单 11 仅突出显示了两者的不同之处。selectedCourse 属性现在有两个注释。selectCourse() 方法也被稍加整理。现在它在继续呈现视图之前重新提取该课程对象。在无状态的设计中,必须确保完全由数据层填充对象,并且正确地初始化任何与显示其详细内容有关的延迟加载。

清单 11. 将所选课程提取到视图

// ...   @DataModelSelection   @Out(value="course", required=false)   private Course selectedCourse;      public String selectCourse() {     System.out.println("Selected course: " + selectedCourse.getName());     // refetch the course, loading all lazy associations     selectedCourse = courseManager.get(selectedCourse.getId());     System.out.println("Redirecting to /courses.jspx");     return "/courses.jspx";   }   // ...

Seam - 无缝集成JSF,第2部分: 借助Seam进行对话(9)

时间:2011-06-25 IBM Dan Allen

其中大多数有趣的变化都发生在视图中,但是这些变化并不新奇。清单 12 显示了在选中某个课程时,呈现在 h:dataTable 下面的详细内容面板:

清单 12. 有条件地为所选课程显示课程详细内容

<h:panelGroup rendered="#{course.id gt 0}">  <h3>Course Detail</h3>  <table class="detail">   <tr>    <th>Course Name</th>    <td>#{course.name}</td>   </tr>   <!-- additional properties --> </h:panelGroup>

重新注入课程

Open 18 应用程序最复杂的用例是创建和更新操作。但是借助 Seam,实现起来并不困难。要完成这两项需求,必须使用一个额外的注释:@In。将课程提取到呈现课程编辑器表单的视图之后,必须在回发时捕获已更新的对象。就像使用 @Out 将变量推送到视图中一样,可以使用 @In 在回发时重新捕获它们。

当用户处理加载到表单中的课程信息时,该课程实体耐心地在 conversation 作用域中等待。因为应用程序使用无状态的服务接口,所以此时的课程实例看作已经与持久化上下文 “分离”。提交该表单时,最终到达 JSF 的更新模型值(Update Model Value)阶段。此

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号