jsf集成spring

过去,我曾尝试将JSF与Spring MVC集成在一起,尽管我的第一次尝试成功了,但这远非理想。 这次,我决定做出一些关键决定来帮助我集中精力:

  • 向后兼容。 支持JSF 1.2涉及的工作太多,而Spring 3.1中出现了太多的好东西,可以忽略。
  • MVC注释为王。 @RequestMapping似乎是大多数人的首选方法。 让我们仅支持此功能,并将所有自定义注释保持在最低限度。
  • 减少依赖性。 重用内容很不错,但这是一个集成项目,因此集成越少越好。

考虑到这一点,我决定以Web Flow的org.springframework.faces.mvc.JsfView类为灵感。 该类非常好用,因为它只处理MVCView ,而ModelController完全保留在Spring领域中。 JsfView的唯一问题是缺少回发支持。 我们需要以某种方式检测对视图的初始请求和任何后续的JSF回发之间的差异。

由于Spring MVC具有非常灵活的架构,因此这是完全可能的。 我们可以在DispatcherServlet注册多个HandlerMappingHandlerAdapter bean。 为了支持JSF,我们需要在此链中的某个较高层来检测和处理回发,而将不是回发的所有内容以常规方式处理。 这是事件的一般顺序:

user               dispatcher    @controller|  /some/request      |              ||-------------------->|   maps to    ||                     |------------->|  creates|                     |              |------------> FacesView|                     |                             (/pages/file.xhtml)|                     |   render                        ||                     |-------------------------------->||                     |                           [Delegate to JSF]|  response           |<--------------------------------||<--------------------||                     ||                     || /some/request       || (postback)          ||-------------------->|      postback handler|                     |--------->||                     |    [Delegate to JSF]|  response           |<---------||<--------------------|          ||                     |          |

回发处理程序有几个有趣的问题要处理。 1)我们怎么知道我们是回发。 2)我们如何知道要还原的视图。 显然,回发将是HTTP POST操作,但是我们不能盲目地假设所有POST都是JSF回发。 我们还需要知道要还原的XHTML文件,但是该文件是基于最后一个请求的@Controller做出的决定。
这两个问题的答案是编写我们自己的JSF ResponseStateManagerResponseStateManager是JSF状态管理基础结构的一部分,并负责读取和写入组件状态。 通常,JSF会将状态数据保存在HTTP会话中,并在页面内写入一个隐藏的表单字段,以便以后可以还原。 使用这种机制,我们可以为MVC编写一个附加字段,该字段的存在使我们知道我们有一个回发,而且该值还将使我们知道要还原的XHTML文件。

有了适当的回发处理程序,我们现在可以充分利用Spring和JSF的优势。 我们可以使用@RequestMapping批注来构建富有表现力的URL,并使用JSF组件来呈现复杂的网页。 如果愿意,我们甚至可以基于完全不同的技术为同一URL返回不同的视图(例如,通过检查HTTP标头,我们可能决定返回JSF页面或XML文档)。

如果您想查看回发处理程序代码,请参见此处 。 通常将其作为移动代码库的警告。

参考: 集成Spring和JavaServer Faces:来自JCG合作伙伴 Phillip Webb的 MVC 细节   在Phil Webb的Blog上 。

翻译自: https://www.javacodegeeks.com/2012/03/spring-jsf-integration-mvc-nuts-and.html

jsf集成spring

jsf集成spring_Spring和JSF集成:MVC螺母和螺栓相关推荐

  1. Spring和JSF集成:MVC螺母和螺栓

    过去,我曾尝试将JSF与Spring MVC集成在一起,尽管我的第一次尝试成功了,但这远非理想. 这次,我决定做出一些关键决定来帮助我集中精力: 向后兼容. 支持JSF 1.2涉及的工作太多,而Spr ...

  2. jsf集成spring_Spring和JSF集成:异常处理

    jsf集成spring 大多数JSF开发人员都会熟悉"发生错误"页面,当在他们的代码某处引发意外异常时,该页面就会显示. 该页面在开发时确实很有用,但对于生产应用程序通常不是您想要 ...

  3. jsf集成spring_Spring和JSF集成:动态导航

    jsf集成spring 通常,您的JSF应用程序将需要超越基本的静态导航并开始做出动态导航决策. 例如,您可能想根据用户的年龄重定向他们. 大多数JSF教程建议通过将命令的action属性绑定到支持b ...

  4. jsf集成spring_Spring和JSF集成:转换器

    jsf集成spring 使用任何Web框架时,都不可避免地需要将用户输入的数据从String为其他类型. 尽管Spring和JSF在设计和功能上确实有很大的不同,但它们都具有转换器策略来处理此问题. ...

  5. jsf集成spring_Spring和JSF集成:导航

    jsf集成spring 我希望这是有关我在Spring和JavaServer Faces之间提供深度集成的努力的一系列博客中的第一篇. 这里提到的所有内容都是"正在进行中的工作", ...

  6. jsf集成spring_Spring和JSF集成:国际化和本地化

    jsf集成spring 如果您正在开发针对多种语言的JSF应用程序,那么您可能很熟悉<f:loadBundle>标记. 即使您的应用程序不支持使用消息捆绑包进行国际化仍然是一个好主意. 在 ...

  7. jsf集成spring_Spring和JSF集成:分页

    jsf集成spring 使用大型数据集时,通常需要以分页格式显示数据. 分页是一个有趣的问题,因为它倾向于跨越应用程序的所有层,从视图层通过应用程序服务一直到对数据库的原始调用. 在获取分页数据时,有 ...

  8. jsf集成spring_Spring JSF集成

    jsf集成spring Welcome to Spring JSF integration tutorial. JSF is a component based framework with grea ...

  9. SpringBoot从入门到精通教程(二十九)- 微信企业支付集成(五分钟集成)

    需求背景 SpringBoot用法:微信企业支付集成(五分钟集成) 问题痛点 通过SpringBoot框架,集成服务端微信企业支付接口,做到下载即用(填写好相关微信支付后台相关Key信息),最快五分钟 ...

最新文章

  1. java优先级对接_Java对接硬件接口,采用Scoket连接,数据报文通信
  2. [JZOJ5866]【NOIP2018模拟9.13】指引
  3. freecodecamp_freeCodeCamp的新编码课程现已上线,其中包含1,400个编码课程和6个开发人员认证
  4. linux通过网关挂在nfs,NFS 网络文件系统挂载在A8板子上
  5. 基于麻雀算法的投影寻踪模型 - 附代码
  6. oracle月份相减函数,Oracle 日期函数的加减
  7. 毕业设计别再做 XX 管理系统了!!!
  8. ORA-01033问题:定位redo日志进行不完全恢复启库实战案例
  9. Java体检系统名称_求购体检中心管理系统JAVA WEB源码
  10. Orcad Capture CIS出BOM表
  11. 【VSCode】解决Java项目的Referenced Libraries (Read-only)问题
  12. PubWin不知道密码情况下卸载
  13. win7右键计算机没有注册类,win7系统提示没有注册类别的解决方法
  14. Desmos图形计算器创建回归方程
  15. amis 视频教程 入门+实战 百度出的前端低代码框架
  16. echo回音消除方案
  17. 【原创】EJB开发基础——EJB规范
  18. CPU 型号后所代表的字母的意思
  19. Asterisk模拟卡的FXO(外线)和FXS(内线)端口详解
  20. Mac OS下不产生.DS_Store 隐藏文件和清理.DS_Store的方法

热门文章

  1. csdn颜色字体的改变
  2. 构建SpringCloud项目基础框架
  3. 部署kafka kafka的service容器和zookeeper kafka客户端 Elasticsearch的客户端
  4. oracle执行runstats,oracle runstats工具
  5. redis-java客户端jedis测试
  6. linux-basic(8)linux磁盘与文件系统管理
  7. 完整的MIME类型列表
  8. java 示例_功能Java示例 第4部分–首选不变性
  9. log4j2 无日志记录_在Log4j2中更好地执行非日志记录器调用
  10. webresource_Jersey WebResource –标头不附加