2

使用しているコントローラーで

return new ModelAndView( "redirect:new_page" );

Spring のバージョンを 3.0.6 から 3.1.2 に変更しましたが、新しいバージョンでは動作しないことがわかりました。

私のコントローラーは次のように定義されています

@Controller
@RequestMapping(value = "/test")
public class MyController {

使ってみた

  • "redirect:/new_page"
  • "redirect:/test/new_page"
  • "redirect:./new_page"

何も役に立ちませんでした、何か考えはありますか?

4

2 に答える 2

1

したがって、問題はオブジェクトを戻り値の型として使用することであり、Spring MVC リファレンス マニュアルによれば、ビュー名またはとしてディスパッチされませんModelAndView

  • その他の戻り値の型は @ModelAttribute、メソッド レベルで指定された属性名 (または戻り値の型クラス名に基づく既定の属性名) を使用して、ビューに公開される単一のモデル属性と見なされます。@ModelAttributeモデルは、コマンド オブジェクトと、注釈付きの参照データ アクセサー メソッドの結果で暗黙的に強化されます。

新しいリリースで実装が変更されたSpring MVCの文書化されていない/内部部分を使用したと思います。

于 2012-09-11T17:19:17.963 に答える
0

Spring 3.0.6 コントローラーでは、次のようなコントローラーで問題ないことがわかりました。

@Controller
@RequestMapping(value = "/dialog")
public class DialogController {

    @RequestMapping(value = "/redirected.view")
    public ModelAndView redirected() {
        System.out.println( "DialogController.redirected()" );
        final ModelAndView mav = new ModelAndView( "redirected" );
        return mav;
    }

    @RequestMapping(value = "/form.view")
    public Object form() {
        System.out.println( "DialogController.form()" );
        return createModel();
    }

    private ModelAndView createModel() {
        final ModelAndView mav = new ModelAndView( "redirect:redirected.view" );
        return mav;
    }

}

...のObject戻り値の型に注意してくださいform()

Spring のバージョンを 3.1.2 に変更すると、404 が返されます WEB-INF/jsp/dialog/form.jsp

はい、viewResolver を使用しています

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

元のコードのメソッドはさらに複雑でした

@RequestMapping(value = "/search.form", method = RequestMethod.POST)
public Object submit( @Valid @ModelAttribute("sequentialSearch") final SequentialSearchData searchObject,
        final BindingResult bindingResult, final Model model, final HttpSession session ) throws Exception {
    ...
}

おそらくそれがエラーが表示されない理由です...

orObjectを返したのでそこにありましたが、今は always を返しているので、戻り値の型を変更でき、機能します。StringModelAndViewModelAndView

于 2012-09-11T16:07:44.600 に答える