快速业务通道

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

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

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

时间:2011-06-25 IBM Dan Allen

只需少量步骤 ...

课程对象仅在回发时注入,而回发是用户提交课程编辑器表单触发的,不是由每个涉及 courseAction 组件的请求触发的。要想有条件地使用 @In 注释,必须在定义它时将其 required 标志设置为 false。这样做可以确保 Seam 在找不到要注入的课程对象时不会发出警报。

当提交课程编辑器表单时,就可以注入以前提取的课程对象。要确保将该实例重新注入回同一属性,则向 @In 注释提供的名称必须等价于 @Out 注释所使用的名称。作为添加这些内容的结果,selectedCourse 属性现在拥有三个注释。(情况变得复杂起来!)

还必须向支持 bean 提供三个额外的操作方法,以处理讲述到的新 CRUD 操作。新注释以及 addCourse()、editCourse() 和 saveCourse() 操作方法如清单 14 所示:

清单 14. 用于创建、编辑和保存课程的其他操作

// ...   @DataModelSelection   @In(value="course", required=false)   @Out(value="course", required=false)   private Course selectedCourse;      public String addCourse() {     selectedCourse = new Course();     selectedCourse.setAddress(new Address());     return "/courseEditor.jspx";   }      public String editCourse() {     selectedCourse = courseManager.get(selectedCourse.getId());     return "/courseEditor.jspx";   }      public String saveCourse() {     // remove course from cached collection     // optionally, the collection could be nullified, forcing a refetch     if (selectedCourse.getId() > 0) {       courses.remove(selectedCourse);     }     courseManager.save(selectedCourse);     // add course to the cached collection     // optionally, the collection could be nullified, forcing a refetch     courses.add(selectedCourse);     FacesMessages.instance().add("#{course.name} has been saved.");     return "/courses.jspx";   }   // ...

课程编辑器页面负责创建和更新。Seam 之所以这么酷,是因为它能够暗中指挥通信,在这个例子中,是通过在您浏览页面时将所选课程保存在上下文中实现的。不需要使用 HttpSession 请求参数,也不需要想方设法存储所选课程。而仅仅是提取想要公开的内容,并注入期望接收的内容。

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

时间:2011-06-25 IBM Dan Allen

编辑器模板

从编辑器页面(如清单 15 所示)观察表单组件。该页使用了以下两个 Seam 组件标记,使得开发视图的工作变得更加简单:

s:decorate 结合 afterInvalidField facet 在每个输入组件之后插入 s:message 组件,输入组件使您不必在页面中重复标记。

s:validateAll 指导 Seam 将 Hibernate Validator 注释结合到 JSF 验证过程,以便在回发时验证表单中的每个字段。

您不会在课程编辑器视图页面上发现任何本地 JSF 验证器,因为 Seam 在利用 Hibernate Validator 时,完全不需使用本地验证器。该页面还显示了 Seam 附带的枚举转换器 组件,以防您碰巧使用 Java 5 枚举类型。

清单 15. 课程编辑器视图

<h2><h:outputText value="#{course.id gt 0 ? ''Edit'' : ''Create''} Course" /></h2> <h:form id="course">  <s:validateAll>   <f:fa

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