6

従来のサーブレットアプリケーションをSpring3.1に変換しています。その過程で、一部のURLは廃止されました。ネットワークに問題があり、すぐには解決されません。上司は、リダイレクトが常に機能することを信頼したくありません。それで、彼女は私に自分のリダイレクトをWebアプリに入れるように頼みました。

URLに末尾のスラッシュがある場合、Spring 3.1はそれを処理するControllerクラス関数を検出しないことを除いて、すべてがうまく機能します。

http://blah.blah.blah/acme/makedonation が検出され、マッピングされ、処理されます

http://blah.blah.blah/acme/makedonation/しません

これが、レガシーURLを処理するために使用しているコントローラークラスです。

import org.springframework.stereotype.Controller;
import org.springframework.validation.*;
import org.springframework.ui.ModelMap;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.SessionAttributes;


import org.apache.log4j.Logger;

@Controller
public class LegacyServletController {

    private static final Logger logger = Logger.getLogger(LegacyServletController.class);

    // Redirect these legacy screns "home", the login screen via the logout process
    @RequestMapping({"makeadonation","contact","complain"})
    public String home() {
        logger.debug("started...");
        return "redirect:logout";

    }// end home()  

}// end class LegacyServletController

私はグーグルで検索して、いくつかの提案を提供するこのStack Overflowの投稿を見つけましたが、Springは初めてであり、それらの提案のいくつかを実装するのに十分な理解がありません。これは特に私のニーズにぴったりのようです。

spring 3.1 RequestMappingHandlerMappingを使用すると、「useTrailingSlashMatch」プロパティを設定できます。デフォルトではtrueです。falseに切り替えると、問題は解決すると思います。

誰かが私にその方法の基本的な例を教えてくれますか、そのような例を含むURLを引用してください(私はGoogleで運がなかった)、またはより良いアイデアを教えてくれますか?

どうもありがとうスティーブ

4

2 に答える 2

6

context.xml で Bean を構成し、プロパティを設定する必要があります。または、リンクまたは春のドキュメントセクション16.4を参照できます

構成例

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
    <property name="useTrailingSlashMatch" value="true">
    </property>
</bean>
于 2012-07-19T15:10:34.730 に答える
2

spring の Java を使用している場合は、次のよう@Configurationに宣言することもできます。@Bean

@Bean
public RequestMappingHandlerMapping useTrailingSlash() {
    return new RequestMappingHandlerMapping() {{ setUseTrailingSlashMatch(true); }};
}
于 2014-12-05T08:18:34.247 に答える