快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

清单 9. 添加命令链接以选择课程

<h2>Courses</h2> <h:panelGroup rendered="#{courses.rowCount eq 0}">  No courses found. </h:panelGroup> <h:dataTable id="courses" var="_course" value="#{courses}"  rendered="#{courses.rowCount gt 0}">  <h:column>   <f:facet name="header">Course Name</f:facet>   <h:commandLink id="select"     action="#{courseAction.selectCourse}" value="#{_course.name}" />  </h:column>  <!-- additional properties --> </h:dataTable>

向提供数据选择的支持 bean 添加的内容主要是注释;放到 conversation 作用域时,必须将该类序列化。

清单 10. 用于捕获所选课程的 DataModelSelection 注释

@Name("courseAction") @Scope(ScopeType.CONVERSATION) public class CourseAction implements Serializable {   // ...   @DataModel   private List<Course> courses;     @DataModelSelection   private Course selectedCourse;      @Begin(join=true)   @Factory("courses")   public void findCourses() {     System.out.println("Retrieving courses...");     courses = courseManager.getAll();   }     public String selectCourse() {     System.out.println("Selected course: " + selectedCourse.getName());     System.out.println("Redirecting to /courses.jspx");     return "/courses.jspx";   } }

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

时间:2011-06-25 IBM Dan Allen

对话的优点

在 清单 10 中可以看出,所有变量作用域是由 Seam 处理的。当执行工厂方法来初始化课程集合时,Seam 遇到 @Begin 注释,因此将该临时对话提升为长期运行的对话。@DataModel 注释提取的变量采用其所有者组件的作用域。因此,在对话期间,该课程集合保持可用。当遇到标记着 @End 注释的方法时,对话结束。

单击某一行的课程名称时,Seam 使用支持该行的课程数据值填充带有 @DataModelSelection 注释的属性。然后触发操作方法 selectCourse(),导致在控制台上显示所选课程的名称。最后,重新显示课程列表。随后就会在控制台中看到:

Retrieving courses... Selected course: Sample Course Redirecting to /courses.jspx

借助 Seam,就不必在 faces-config.xml 中定义导航规则,即映射每个操作的返回值。取而代之,Seam 检查操作的返回值是不是有效的视图模板(技术上称之为视图 id),并对其执行动态导航。这项功能能够使简单的应用程序保持简单,还允许对更高级的用例使用声明式导航。请记住,在这个例子中,Seam 在执行导航时发出了重定向命令。

如果需要通过声明结束对话,则可以使用 @End(beforeRedirect=true) 注释操作方法 selectCourse(),在这种情况下,对话会在每次调用该方法后结束。beforeRedirect 属性确保在呈现下一个页面之前清除对话上下文中的变量,这样能使临时对话的工作短路,而在重定向时临时对话通常会填充这些值。在这个方案中,在每次选中课程时开始数据准备过程。执行完以上描述的同一事件序列之后,现在控制台将显示:

Retrieving courses... Selected course: Sample Course Redirecting to /courses.jspx Retrieving courses...

提取课程的详细内容

您尚未详细了解显示课程的用例。@DataModelSelection 注释负

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号