1.複数のビューリゾルバ
InternalResourceViewResolverは、JSPページを解析するためのjspパーサを構築しました
ここでは、InternalResourceViewResolverを使用し、それがビューを作成しますbuildView方法を、持っている、それは(それがJSPの存在しない場合であっても)NULLとして見ることはありません。問題は、この中で、私たちは、このデフォルトを使用する場合であるので、知らない前方この時点でJSPを転送して使用するサーブレットが存在します。
ソリューション
最も簡単な方法は、ルールが処理できるかどうかを指定するには、そのviewNamesプロパティを使用することです
<プロパティ名= "viewNames"値= " weixinの*" />
<プロパティ名= "viewNames"値= "ベース*" />
意味の二つは、このようなパーサのweixin *にviewNamesを与えること/ weixinという名前のビューのリターンとして処理するためのベースを、開始weixinまたはビューの名前であるため、サポートのルールは、Javadocを表示することができます。
<! - ビューリゾルバは、要求に応じて異なる経路に応じて構成することができる- > < ビーンクラス=「org.springframework.web.servlet.view.InternalResourceViewResolver」> < プロパティ名=「viewNames」値=「Weixin * " /> < プロパティ名="接頭辞" 値=" / " /> < プロパティ名="サフィックス" 値=。" JSP " /> < プロパティ名="注文" 値=" 0 " /> </ 豆> < 豆のクラス= "org.springframework.web.servlet.view.InternalResourceViewResolver" > < プロパティ名= "viewNames" 値= "ベース*" /> < プロパティ名= "接頭辞" 値= "/ログイン/" /> < プロパティ名= "接尾辞" 値"JSP" = /> < プロパティ名= "オーダー" 値= "1" /> </ 豆> 如何调用? ( "リダイレクト:weixin / index.jspの")を新しいのModelAndViewを返す; //走的是第一个视图解析器 ( "リダイレクト:ベース/ login.jspを")を新規のModelAndViewを返します。//まず、最初の決定要件を満たすために、第2のビューリゾルバに従って長く、weixinで起動しません
HTMLビューリゾルバの設定
freemarkは、HTMLページを解析する必要が
<! - <豆ID = "defaultViewResolver"クラス= "org.springframework.web.servlet.view.InternalResourceViewResolver"> <プロパティ名= "viewClass"値= "org.springframework.web.servlet.view.JstlView"> </プロパティ> <プロパティ名= "接頭辞"値= "/ WEB-INF /ビュー/"> </ property>の <プロパティ名= "サフィックス"値= "JSP。"> </ property>の </豆> - - >
< ビーンID = "freemarkerConfig" クラス= "org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer" > < プロパティ名= "templateLoaderPath" > < 値> / WEB-INF /ビュー/ </ 値> </ プロパティ> </ 豆> < 豆のid = "htmlviewResolver" クラス= "org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver" > < プロパティ名= "接尾辞"値= "htmlの" /> < プロパティ名= "オーダー" 値= "0" > </ プロパティ> < プロパティ名= "contentTypeの" 値= "text / htmlの;のcharset = UTF-8" > </ プロパティ> </ 豆>
次のようにTomcatを実行すると、例外が発生する可能性があります。
java.lang.ClassNotFoundException:org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryによって引き起こさ
org.apache.catalina.loader.WebappClassLoaderBase.loadClassで(WebappClassLoaderBase.java: 1309)
依存関係を紹介:
<依存性> <のgroupId> org.springframework </のgroupId> <たartifactId>ばねコンテキストサポート</たartifactId> <バージョン> 4.3.13.RELEASE </バージョン> </依存>
次のように例外がまだ表示される場合があります。
java.lang.ClassNotFoundException:freemarker.cache.TemplateLoaderによって引き起こされます
依存関係を紹介:
<依存> <groupIdを> org.freemarker </ groupIdを> <たartifactId> FreeMarkerの</たartifactId> <バージョン> 2.3.23 </バージョン> </依存関係>
また、次の例外が発生する可能性があります。
java.lang.NoSuchFieldErrorの:によって引き起こさDEFAULT_INCOMPATIBLE_IMPROVEMENTS
この異常は、通常の依存関係が生じfreemarkバージョンによって提供される、freemarkバージョンを変更することによって解決することができる(一般freemark依存性の高いバージョンを使用)