1

これがこの質問をするのに適切なフォーラムでない場合は、事前にお詫び申し上げます...しかし、当惑しています。

新しい Web サイトで Spring 3.1.1 を使用しています。それを構築するチームは、まあ、経験が浅いです。

私はこのコードに遭遇しました:

public String signOut(@ModelAttribute("state") State state, Model model) {
    // useful stuff here
    return "signOut.html";
}

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/" />
    <property name="suffix" value=".jspx" />
</bean>

ただし、作成した JSP ファイルの名前は/WEB-INF/jsp/signOut.jspx(html は名前の一部ではありません) です。

驚いたことに、これは実際に機能します。InternalViewResolver は/WEB-INF/jsp/signOut.html.jspx期待どおりに戻ります。

ある時点で、Spring は のために作成されたコンパイル済みの JSP サーブレットを見つけることができなかったと思っていましたが、問題なく見つけているsignOut.html.jspxようです!

これはどのように機能している可能性がありますか?そして、それはどのような損害を与えるでしょうか?

4

1 に答える 1

2

まあ、実際にはすべてが設計どおりに機能します。コントローラーから、ビュー名 (この場合のように)、Viewビュー名をカプセル化するインスタンス、またはModelAndViewビューとモデルの両方をカプセル化するインスタンスを返すことができます。

あなたの場合、String戻り値はビュー名を意味します。そのため、 Spring はViewResolver抽象化を使用してビュー名を実際のビュー ファイルに変換します。prefixおよびプロパティは、suffixコントローラーから完全修飾ファイル パスを返す必要がないように構成されています。接頭辞と接尾辞が適用され、Spring は適切な場所でビュー ファイルを見つけます。

あなたにとって驚くべきことは何ですか?

于 2012-05-09T19:08:57.887 に答える