XmlViewResolver 和 ResourceBundleViewResolver

使用XmlViewResolver

如果視圖對象的 Bean 數目太多,那么直接在 smart-servlet.xml 文件中配置,勢必影響主配置文件的簡潔性。XmlViewResolver 和 BeanNameViewResolver 功能相似,唯一不同的是它可以將視圖 Bean 定義在一個獨立的 XML 文件中。要使用 XmlViewResolver,必須在 smart-servlet.xml 添加以下片段:

<bean class="org.springframework.web.servlet.view.XmlViewResolver"p:order="20" p:location="/WEB-INF/views/smart-views.xml"/>

在默認情況下,XmlViewResolver 在 WEB-INF/views.xml 中查找視圖 Bean 的定義文件。我們將視圖 Bean 定義在 WEB-INF/views/smart-views.xml 文件中,所以需要通過?location 顯式指定。

定義視圖 Bean 的 smart-views.xml 文件,其格式和普通的 Spring 配置文件沒有任何區別。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><bean id="userListJson1"class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"p:modelKeys="message" /><bean id="userListExcel1" class="com.smart.web.UserListExcelView"/><bean id="userListPdf1" class="com.smart.web.UserListPdfView"/></beans>

不過在 smart-views.xml 文件中定義的 Bean 不能被 Spring Web 上下文的其他 Bean?引用,它是被 XmlViewResolver 獨享的。

?

使用ResourceBundleViewResolver

對于同一個邏輯視圖名,如果希望為不同地區的用戶提供不同類型的視圖,則應該考慮使用ResourceBundleViewResolver。和 XmlViewResolver 將視圖定義在 XML 文件中不同, ResourceBundleViewResolver 通過一個國際化資源文件定義視圖對象。

例如,假設小春論壇需要考慮不同國家和地區客戶的不同展現需求:中國人喜歡使用 HTML 頁面的展現方式,而美國人喜歡使用 PDF 的展現方式一一一雖然這個需求很“怪誕”,但不影響我們把它作為一個例子。可以通過 ResourceBundleViewResolver 來實現這個需求,在 smart-servlet.xml 中添加以下代碼:

<bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver"p:order="30" p:basename="/i18n/views"/>

通過 basename 屬性指定視圖國際化資源文件的基名。對應于中國大陸的視圖資源文件為views_zh_CN.properies,其內容為:

userListi18n.(class)=org.springframework.web.servlet.view.JstlView   //①
userListi18n.url=/WEB-INF/views/user/userList.jsp       //②

其中,使用 <邏輯視圖名>.(class) 屬性設置視圖實現類,如①處所示。如果視圖實現需要一個 URL 資源的支持,則可以通過 <邏輯視圖名>.url 設置這個 URL 資源。對于?JstlView 視圖實現類來說,其實是通過調用 JstlView#seturl() 設置 <邏輯視圖名>.url 指定?JSP 文件的。

對應于美國的視圖資源文件為 views_en_US.properties,其內容為:

userListi18n.(class)=com.smart.web.UserListPdfView

當美國用戶查看論壇的用戶列表時,ResourceBundleViewResolver 視圖解析器將其解析為一個PDF文檔。

在一個視圖國際化資源文件中可以定義多個視圖對象,如下:

//第一個視圖
welcomeView.(class)=org.springframework.web.servlet.view.JstlView   
welcomeView.url=/WEB-INF/jsp/welcome.jsp      //第二個視圖
vetsView.(class)=org.springframework.web.servlet.view.JstlView   
vetsView.url=/WEB-INF/jsp/vets.jsp      

?

轉載于:https://www.cnblogs.com/jwen1994/p/11182507.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/247495.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247495.shtml
英文地址,請注明出處:http://en.pswp.cn/news/247495.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(轉載)Git使用教程:最詳細、最傻瓜、最淺顯、真正手把手教!

轉載自 Git使用教程 預警&#xff1a;因為詳細&#xff0c;所以行文有些長&#xff0c;新手邊看邊操作效果出乎你的預料&#xff09;一&#xff1a;Git是什么&#xff1f; Git是目前世界上最先進的分布式版本控制系統。 工作原理 / 流程&#xff1a; Workspace&#xff1a;工作…

soureTree中如何設置git 用戶名與密碼 SourceTree提交修改用戶詳細圖文方法

mac上軟件更新&#xff1a; 現在沒有網絡小模塊了&#xff0c;在同行右邊高級里面有默認用戶名刪除即可&#xff01;&#xff01;&#xff01;&#xff01; sourceTree 切換Git登錄用戶&#xff0c;之前在SourceTree提交遠程服務用的是同事的賬號&#xff0c;同事離職后賬號也…

shell 腳本 生成文件,文件名為日期時間

腳本如下 #/bin/bashfilename$(date %Y%m%d)_$(date %H%M%S) touch $filename.txt 其中 $() 表示括號中的 shell 命令的結果&#xff0c;所以 filename 是一個字符串&#xff0c;比如 20190714_111631&#xff0c;即 2019 年 7 月 14 日 11 點 16 分 31 秒。 然后第二行命令&am…

js利用HTML5的拖拽API做流程圖

上代碼 直接用看效果&#xff0c;學習一下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title><style type"text/css">#d1{width:800px;height:800px;border: 1…

Pots (BFS ? 輸出路徑)

題目鏈接&#xff1a;http://poj.org/problem?id3414 思路&#xff1a; 因為有六種操作&#xff0c;所以六種操作中合法的都加入隊列中BFS 如何去輸出路徑呢&#xff1f; 我們不妨設一個string數組&#xff0c;它的索引就和我們的步數有關&#xff0c;然后按順序輸出就可以了…

box-sizing的使用

box-sizing 人們慢慢的意識到傳統的盒子模型不直接&#xff0c;所以他們新增了一個叫做 box-sizing 的CSS屬性。當你設置一個元素為 box-sizing: border-box; 時&#xff0c;此元素的內邊距和邊框不再會增加它的寬度。這里有一個與前一頁相同的例子&#xff0c;唯一的區別是兩…

vue-router的hash模式和history模式,

hash模式背后的原理是onhashchange事件,可以在window對象上監聽這個事件: window.onhashchange function(event){ console.log(event.oldURL, event.newURL); let hash location.hash.slice(1); document.body.style.color hash; } 上面的代碼可以通過改變hash來改變頁面字體…

更新node最新版本方法和 npm install -g n 運行錯誤

使用xshell連接linux服務器后&#xff0c;首先輸入node -v查看當前使用的版本 如果上面查看的版本比較低&#xff0c;則可以開始升級 清除npm cache 升級之前還需要安裝n模塊&#xff0c;n模塊是專門用來管理nodejs的版本 輸入npm install -g n n模塊安裝完成之后&#x…

vue-router的路由

路由和組件是有區別的&#xff1a;組件一般是在同一個頁面的不同模塊&#xff0c;但是路由是直接切換到另一個頁面&#xff0c;之前的頁面銷毀。 App.vue中的router-view會渲染頂級路由匹配到的組件。組件內部嵌套的router-view會渲染子路由匹配到的組件。 當路由跳轉的時候&am…

mac上的更新node npm

查看當前node版本 $ node -v v8.9.4 清除node.js的cache(不確定有沒有必要) $ sudo npm cache clean -f Password: npm WARN using --force I sure hope you know what you are doing. 安裝工具n &#xff0c;這個工具是專門用來管理node.js版本的 $ sudo npm install -g …

電源芯片選擇DC/DC還是LDO?《轉》

這個取決于你的應用場合。比如用在升壓場合&#xff0c;當然只能用DC/DC&#xff0c;因為LDO是壓降型&#xff0c;不能升壓。另外看下各自的主要特點&#xff1a; DC/DC:效率高&#xff0c;噪聲大&#xff1b; LDO:噪聲低&#xff0c;靜態電流小&#xff1b; 所以如果是用在壓降…

Atom React或前端插件推薦

分享一些Atom個人在用的插件,喜歡請點贊 1. color-picker 取色工具 2. pigments 編輯器中直接查看代碼所代表的顏色&#xff0c;工具雖小但是很實用。 3. minimap 仿sublime text的縮略代碼查看&#xff0c;想找的地方一目了然。 4. highlight-selected 選擇某段代碼自動高…

Nike Kyrie 1 Performance Review

Traction – There has been many varying opinions on the Kyrie 1’s traction, and I don’t think any of them have been wrong. I’d say under the right conditions, the traction is excellent. I’ve experienced nothing but great traction out of them, but all o…

Tapable.plugin is deprecated. Use new API on `.hooks` instead

問題描述 在使用extract-text-webpack-plugin給webpack打包時出現報錯 Tapable.plugin is deprecated. Use new API on .hooks instead 1 問題原因 extract-text-webpack-plugin目前版本不支持webpack4。 解決方案 使用extract-text-webpack-plugin的最新的beta版 npm inst…

第二周進度總結

本周主要在完成假期作業&#xff0c;學習的時間大部分花在代碼上。完成了3個代碼的編譯。第一個是害死人不償命的(3n1)猜想。第二個是成績排名&#xff08;輸出成績最高和成績最低學生的姓名和學號&#xff09;。第三個是換個格式來輸出任一個不超過 3 位的正整數。這三個題目中…

webpack.optimize.CommonsChunkPulgin is not a constructor???請看CommonsChunkPlugin VS SplitChunksPlugin

webpack團隊人員臥薪嘗膽五個多月的時間終于帶來的webpack4&#xff0c;個人覺得webpack4帶來的最大優化便是對于懶加載塊拆分的優化&#xff0c;刪除了CommonsChunkPlugin&#xff0c;新增了優化后的SplitChunksPlugin&#xff0c;那么CommonsChunkPlugin的痛點在哪&#xff1…

多重表(廣義表)

在深入淺出數據結構系列前面的文章中&#xff0c;我們一直在討論“線性表”&#xff0c;其形式如下&#xff1a; 由a1,a2,a3,……a(n-1)個元素組成的序列&#xff0c;其中每一個元素ai(0<i<n)都是一個“原子”&#xff0c;“原子”的意思就是說元素本身是一個個體&#x…

簡單教你React父子組件間平級組件間傳值

國慶充電特輯&#xff1a; 堵車堵死&#xff0c;廢話不多說直接上菜。 1.父組件對子組件傳值 利用props屬性傳值 class Component extends React.Component {constructor (props) {super(props);}render() {return (<div><h1>I am {this.props.name}</h1>…

Requests庫的主要方法:requests.request為requests.get和requests.post兩個的匯總,只是需要傳方法...

1. requests.request(method,url,**kwargs&#xff09; method&#xff1a;請求方式&#xff0c;對應get/put/post等七種&#xff1a;擬獲取頁面的url鏈接&#xff1a;控制訪問參數&#xff0c;共13個method&#xff1a;請求方式rrequests.request(GET,url,**kwargs) r reques…

jQuery插件開發教程

jQuery插件開發精品教程&#xff0c;讓你的jQuery提升一個臺階 要說jQuery 最成功的地方&#xff0c;我認為是它的可擴展性吸引了眾多開發者為其開發插件&#xff0c;從而建立起了一個生態系統。這好比大公司們爭相做平臺一樣&#xff0c;得平臺者得天下。蘋果&#xff0c;微軟…