こんにちは、私はSpring MVCには新しく、いくつかの簡単な例を試しています。春のmvc @PathVariableは、 'クライアントが送信したリクエストは構文的に正しくありませんでした。
私は、spring-mvc-archtypeというarchtypeを使用してEclipseで新しいSpring mvc mavenプロジェクトを作成しました。
私はここで文字列>
は私のコントローラクラスが
@Controller
@RequestMapping(value="/greet")
public class HomeController {
@RequestMapping(value="/welcome/{countryName}/{userName}")
public ModelAndView test(@PathVariable("userName") String userName, @PathVariable("countryName") String countryName) throws IOException{
ModelAndView mav = new ModelAndView("home");
mav.addObject("mymessage", "Welcome To "+countryName+" , Spring MVC - "+userName);
return mav;
}
@RequestMapping(value="/hi/{cn}/{un}")
public ModelAndView hi(@PathVariable Map<String, String> pathVars){
String countryName = pathVars.get("cn");
String userName = pathVars.get("un");
ModelAndView mav = new ModelAndView("home");
mav.addObject("mymessage", "Hi "+userName+" in "+ countryName);
return mav;
}
}
であり、ここでは、Configurationクラス
で、URLをヒットし、地図 <文字列で@PathParamを使用してPathVariablesにアクセスしようとしています@Configuration
@EnableWebMvc
@ComponentScan(basePackages="org.gyanbang.kiran.SpringMvc")
public class MvcConfiguration extends WebMvcConfigurerAdapter{
@Bean
public ViewResolver getViewResolver(){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
}
だから私はこれを実行し、ヒット http://localhost:8080/SpringMvc/greet/welcome/India/user1それはうまく動作し、私は希望の結果を得る。
しかし、http://localhost:8080/SpringMvc/greet/hi/India/user1には、メッセージで400エラーが発生します。 'クライアントから送信された要求が構文的に正しくありませんでした。 '
私はいくつかのオプションを試して、spring-webmvcのバージョンを4.1.6.RELEASEに変更しようとしましたが、その場合は404が表示されます。
助けがあれば助かります。 ありがとうございます。
変数をマップにする特別な理由はありますか? – geoffreydv
@geoffreydv特別な理由はありませんが、私はそれを試して、どのように動作するかを見たいと思います。また、パス変数を実装するコンセプトと方法としては簡単です。ありがとう –
解決済み:まあ、私は、スプリングコンテキストとスプリングテストのアーティファクトバージョンを4.3.9.RELEASEとspring-webmvcを4.1.6.RELEASEとして更新する必要があるようです。 バージョンを更新した後、上記のコードで正常に動作しています。 ありがとうございます。 :-) –