javascript
jsf集成spring_Spring和JSF集成:动态导航
jsf集成spring
通常,您的JSF應(yīng)用程序?qū)⑿枰交镜撵o態(tài)導(dǎo)航并開(kāi)始做出動(dòng)態(tài)導(dǎo)航?jīng)Q策。 例如,您可能想根據(jù)用戶(hù)的年齡重定向他們。 大多數(shù)JSF教程建議通過(guò)將命令的action屬性綁定到支持bean來(lái)實(shí)現(xiàn)動(dòng)態(tài)導(dǎo)航: <h:commandButton action="#{bean.actionBasedOnAge}"/>public String actionBasedOnAge() {if(age < 12) {return "fetchadult";} else {return "ok"} }上面的示例顯示了十二歲以下的人如何被定向到'fetchadult'而不是通常的'ok' 。 'fetchadult'和'ok'結(jié)果都需要在faces-config.xml定義導(dǎo)航規(guī)則,以便JSF知道要顯示的實(shí)際頁(yè)面。
使用Spring MVC時(shí),將導(dǎo)航邏輯包含在@Controller bean中通常更為自然。 為了解決這個(gè)問(wèn)題,從MVC渲染JSF時(shí),可以使用隱式的'controller'和'handler'變量。 'controller'變量提供對(duì)映射到原始請(qǐng)求的控制器bean的訪問(wèn),并提供對(duì)基礎(chǔ)MVC處理程序的'handler'變量的訪問(wèn)。 在Spring 3.0中, 'controller'和'handler'通常是同一對(duì)象。 但是,在Spring 3.1中,底層的MVC體系結(jié)構(gòu)正在發(fā)生變化 , 'handler'通常是org.springframework.web.method.HandlerMethod實(shí)例。
這是一個(gè)引用@Controller的someNavigation()方法的提交按鈕:
<h:commandButton action="#{controller.someNavigation"/>雖然訪問(wèn)控制器bean很有用,但它不是理想的解決方案。 我更喜歡在我的JSF頁(yè)面中使用邏輯名并映射那些Java方法。 我還想要一種簡(jiǎn)單的方法來(lái)從基礎(chǔ)模型中獲取數(shù)據(jù)。
@NavigationMapping批注提供了另一種更靈活的導(dǎo)航方法。 它的工作方式與@RequestMappings非常相似。 注釋可以放在@Controller任何公共方法上,以將導(dǎo)航結(jié)果映射到目的地。
<h:commandButton action="submit"/>@NavigationMapping public String onSubmit() {return "redirect:http://www.springsource.org"; }如果您需要訪問(wèn)支持bean,則可以使用標(biāo)準(zhǔn)的Spring @Value注釋。 頁(yè)面可以解析的任何EL表達(dá)式也可以在導(dǎo)航方法參數(shù)上使用。
@NavigationMapping public String onSubmit(@Value("#{person.age}") int age) { ... }訪問(wèn)模型元素甚至更加容易。 只要您只有一個(gè)要在模型中訪問(wèn)的類(lèi)型的對(duì)象,而且它不是簡(jiǎn)單類(lèi)型(int,String等),就不需要任何注釋:
@NavigationMapping public String onSubmit(Person p) { ... }也可以使用其他參數(shù)類(lèi)型(有關(guān)完整列表,請(qǐng)參見(jiàn)JavaDoc)。 例如,這是一個(gè)導(dǎo)航映射,處理'submit' , 'cancel'和'save'結(jié)果。 注入的參數(shù)告訴我們單擊了三個(gè)結(jié)果中的哪個(gè),并提供了對(duì)源UIComponent訪問(wèn)。
@NavigationMapping('submit','cancel','save') public String handleNavigation(String outcome, UIComponent source) { ... }返回類(lèi)型也同樣靈活。 您可以返回視圖名稱(chēng)作為String S,你也可以使用相同的"@hotelsController.show"符號(hào),我以前的博客上講述 。 您也可以直接返回View object ,或者如果要包含隱式模型項(xiàng),則可以使用NavigationOutcome 。
最后,如果只想呈現(xiàn)立即響應(yīng),則可以使用@ResponseBody批注或返回HttpEntity 。 它的工作方式與Spring完全相同。
參考: 集成Spring和JavaServer Faces:來(lái)自Phil Webb博客Blog的 JCG合作伙伴 Phillip Webb的動(dòng)態(tài)導(dǎo)航 。
翻譯自: https://www.javacodegeeks.com/2012/05/spring-jsf-integration-dynamic.html
jsf集成spring
總結(jié)
以上是生活随笔為你收集整理的jsf集成spring_Spring和JSF集成:动态导航的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: 苏州将建成国内首条“智慧高速”,可实现
- 下一篇: “电磁炮”当火箭助推器,我国商业航天电磁
