Spring和JSF集成:动态导航
action
属性绑定到支持bean来实现动态导航:
<h:commandButton action="#{bean.actionBasedOnAge}"/>
public String actionBasedOnAge() {if(age < 12) {return "fetchadult";} else {return "ok"}
}
上面的示例显示了十二岁以下的人如何被定向到'fetchadult'
而不是通常的'ok'
。 'fetchadult'
和'ok'
结果都需要在faces-config.xml
定义导航规则,以便JSF知道要显示的实际页面。
使用Spring MVC时,将导航逻辑包含在@Controller
bean中通常更为自然。 为了解决这个问题,从MVC渲染JSF时,隐式的'controller'
和'handler'
变量可用。 'controller'
变量提供对映射到原始请求的控制器bean的访问,并提供对基础MVC处理程序的'handler'
变量的访问。 在Spring 3.0中, 'controller'
和'handler'
通常是同一对象。 但是,在Spring 3.1中,底层的MVC体系结构正在发生变化 , 'handler'
通常是org.springframework.web.method.HandlerMethod
实例。
这是一个引用@Controller
的someNavigation()
方法的提交按钮:
<h:commandButton action="#{controller.someNavigation"/>
虽然访问控制器bean很有用,但它不是理想的解决方案。 我更喜欢在我的JSF页面中使用逻辑名并映射那些Java方法。 我还想要一种简单的方法来从基础模型中获取数据。
@NavigationMapping
批注提供了另一种更灵活的导航方法。 它的工作方式与@RequestMappings
非常相似。 注释可以放在@Controller
任何公共方法上,以将导航结果映射到目的地。
<h:commandButton action="submit"/>
@NavigationMapping
public String onSubmit() {return "redirect:http://www.springsource.org";
}
如果您需要访问支持bean,则可以使用标准的Spring @Value
注释。 页面可以解析的任何EL表达式也可以在导航方法参数上使用。
@NavigationMapping
public String onSubmit(@Value("#{person.age}") int age) {
...
}
访问模型元素甚至更加容易。 只要您只有一个要在模型中访问的类型的对象,并且它不是简单类型(int,String等),就不需要任何注释:
@NavigationMapping
public String onSubmit(Person p) {
...
}
也可以使用其他参数类型(有关完整列表,请参见JavaDoc)。 例如,这是一个导航映射,处理'submit'
, 'cancel'
和'save'
结果。 注入的参数告诉我们单击了三个结果中的哪个,并提供了对源UIComponent
访问。
@NavigationMapping('submit','cancel','save')
public String handleNavigation(String outcome, UIComponent source) {
...
}
返回类型也同样灵活。 您可以返回视图名称作为String
S,你也可以使用相同的"@hotelsController.show"
符号,我以前的博客上讲述 。 您也可以直接返回View object
,或者如果要包含隐式模型项,则可以使用NavigationOutcome
。
最后,如果只想呈现即时响应,则可以使用@ResponseBody
批注或返回HttpEntity
。 它的工作方式与Spring完全相同。
参考: 集成Spring和JavaServer Faces:来自Phil Webb博客博客中的JCG合作伙伴 Phillip Webb的动态导航 。
翻译自: https://www.javacodegeeks.com/2012/05/spring-jsf-integration-dynamic.html
Spring和JSF集成:动态导航相关推荐
- Spring和JSF集成:导航
我希望这是有关我在Spring和JavaServer Faces之间提供深度集成的努力的一系列博客中的第一篇. 这里提到的所有内容都是"正在进行中的工作",因此,如果您签出代码,请 ...
- jsf集成spring_Spring和JSF集成:导航
jsf集成spring 我希望这是有关我在Spring和JavaServer Faces之间提供深度集成的努力的一系列博客中的第一篇. 这里提到的所有内容都是"正在进行中的工作", ...
- Spring和JSF集成:转换器
使用任何Web框架时,都不可避免地需要将用户输入的数据从String为其他类型. 尽管Spring和JSF在设计和功能上确实有很大的不同,但它们都具有转换器策略来处理此问题. 让我们从春天开始. Sp ...
- Spring和JSF集成:MVC螺母和螺栓
过去,我曾尝试将JSF与Spring MVC集成在一起,尽管我的第一次尝试成功了,但这远非理想. 这次,我决定做出一些关键决定来帮助我集中精力: 向后兼容. 支持JSF 1.2涉及的工作太多,而Spr ...
- Spring和JSF集成:选择项目
使用JSF,要使用组合框,列表框和复选框,您需要了解javax.faces.model.SelectItem类. SelectItem表示单个可选选项. 它既包含渲染所需的信息,又包含选择该项目时应绑 ...
- Spring和JSF集成:异常处理
大多数JSF开发人员都会熟悉"发生错误"页面,当在他们的代码某处引发意外异常时,该页面就会显示. 该页面在开发时确实很有用,但对于生产应用程序通常不是您想要的. 通常,在用库存JS ...
- Spring和JSF集成:分页
处理大型数据集时,通常需要以分页格式显示数据. 分页是一个有趣的问题,因为它倾向于跨越应用程序的所有层,从视图层通过应用程序服务一直到对数据库的原始调用. 在获取分页数据时,有一些非常好的解决方案. ...
- Spring和JSF集成:国际化和本地化
如果您正在开发针对多种语言的JSF应用程序,那么您可能很熟悉<f:loadBundle>标记. 即使您的应用程序不支持使用消息包的国际化仍然是一个好主意. 在<f:loadBundl ...
- jsf集成spring_Spring JSF集成
jsf集成spring Welcome to Spring JSF integration tutorial. JSF is a component based framework with grea ...
最新文章
- 前端的一些常用DOM和事件归纳
- mysql binlog 权限_MySQL如何开启binlog?binlog三种模式的分析
- Spring容器与上下文理解
- Qt Widgets、QML、Qt Quick的概念与区别
- 政府公务办公安全保密邮件系统建设
- mongodb转实体对像_营销案例丨实体店走出门面冷清的方法:打造体验式门店
- bzero和memset函数比较
- 扫描二维码登录的接口
- 【算法】路径规划中的Dijkstra(狄克斯特拉)与A星算法
- 计算机上的符号在哪找,像w的那个符号在哪里可以找到?word文档
- Oracle 官方文档在线查看Oracle函数
- python实现Kmeans算法
- 新胖子公式(java)
- 哪吒之魔童降世视听语言影评_《哪吒之魔童降世》观后感精彩影评5篇450字
- oracle rac mpp,DB2 purescale vs Oracle RAC
- C/C++黑魔法-利用include宏读文件
- 510758-19-7,5-FAM-Alkyne高选择性和灵敏的荧光生物标记物,可用于标记碱性磷酸酶 (ALP)
- 三维扫描技术在精密注塑件尺寸检测中的应用
- oracle的mysql_Oracle与MySQL的区别简析
- 解决selenium与chrome版本不匹配问题
热门文章
- 会话技术Session
- mysql中使用CASE WHEN
- pbfunc外部扩展函数_从外部CorDapp扩展和覆盖流
- spring boot分层_只需5分钟即可启动并运行分层架构:: Spring Boot第1部分
- neo4j cypher_Neo4j:Cypher –避免热切
- 我可以/应该在事务上下文中使用并行流吗?
- 1.0jpa 2.0_JPA 2.1实体图–第1部分:命名实体图
- HOW-TO:具有MySQL的JEE应用程序中具有集群功能的Quartz Scheduler
- 从响应式Spring Data存储库流式传输实时更新
- nodemanager_如何使用NodeManager来控制WebLogic Server