spring aop、@PathVarable
2002 ワード
もっと読む
開発中にページが欲しいです.ユーザーが選択した言語によって異なる言語の文字を表示します.
国際化に関する技術:http://slnddd.iteye.com/admin/blogs/2339737
前の文章で使われているurl形式は127.1.0.1:8080/list?lang=enです.
でもなんだかよくないです.レジュful風のurlに変えたいです. : 127.1.0.1:8080/en/listこのような
また、Request Mappingページごとにジャンプする方法が欲しいので、現在のlangをフロントに届けることができます.
つまり127..0.1:8080/lang'/listという形では、まずパラメータを伝えなければなりません.そうでなければ、直接404です.そして@PathVarableを使う必要があります.
もう一つ不思議なのはString langという形では伝わりませんが、対象のタイプのbeanであれば伝わります.プログラムが実行されている時に127.1.0.1:8080/lang'/listというタイプのurlが発見された時に、まずパラメータの中に@PathVarableの注釈がありますか?beanオブジェクトは、同じ名前のものを直接検索して賦課します.
開発中にページが欲しいです.ユーザーが選択した言語によって異なる言語の文字を表示します.
国際化に関する技術:http://slnddd.iteye.com/admin/blogs/2339737
前の文章で使われているurl形式は127.1.0.1:8080/list?lang=enです.
でもなんだかよくないです.レジュful風のurlに変えたいです. : 127.1.0.1:8080/en/listこのような
また、Request Mappingページごとにジャンプする方法が欲しいので、現在のlangをフロントに届けることができます.
@Aspect
@Component
public class ControllerInterceptor {
// request,response,model,lang requestMapping
@Pointcut("execution(* com.xxxx.xxxx.xxxx.controller..*(..)) and @annotation(org.springframework.web.bind.annotation.RequestMapping)")
public void excute(){}
@Around("excute() && args(request,response,model,lang,..)")
public ModelAndView around(ProceedingJoinPoint joinPoint,HttpServletRequest request,HttpServletResponse response,ModelAndView model,String lang) throws Throwable {
Object[] args = joinPoint.getArgs();
joinPoint.getArgs()[3] = lang;
joinPoint.proceed(args);
model.addObject("lang", lang);
return model;
}
}
//
@RequestMapping(value = "/{lang:en|zh}/list")
public ModelAndView list(HttpServletRequest request,HttpServletResponse response,ModelAndView model,@PathVariable String lang) {
model.setViewName("index");
return model;
}
このようなパラメータ付きのurlは@PathVarableがないと127.1.0.1:8080/en/listという形でaopでは取得できません.@PathVarableを加えると取得できます.つまり127..0.1:8080/lang'/listという形では、まずパラメータを伝えなければなりません.そうでなければ、直接404です.そして@PathVarableを使う必要があります.
もう一つ不思議なのはString langという形では伝わりませんが、対象のタイプのbeanであれば伝わります.プログラムが実行されている時に127.1.0.1:8080/lang'/listというタイプのurlが発見された時に、まずパラメータの中に@PathVarableの注釈がありますか?beanオブジェクトは、同じ名前のものを直接検索して賦課します.