2017-02-13 10 views
0

シンプルコントローラは&タイルビューリゾルバ=>それは Spring4 Rest ControllerでViewResolverの仕事は誰ですか?誰がリクエスト後にビューをレンダリングするのですか?

/** 
* For Exple: 
* Spring Controller 
* & Tiles View Resolver 
* It Works Well 
*/ 
@Controller 
public class Home { 
    @Autowired 
    private IManager<BaseObject> manager; 
    public void setManager(IManager<BaseObject> manager) { 
     this.manager = manager; 
    } 
    @RequestMapping(value = "/listprovider", method = RequestMethod.GET) 
    public String listProvider(ModelMap model) { 
     model.addAttribute("listprovider",this.manager.getAllProvider()); 
     return "listProviderPage"; 
     // listProviderPage ==> the name of the rendered (Tiles)View. 
     // it works well 
    } 
} 

しかし、唯一のJSONがないビューページは、私がビューのページ& JSONデータの両方をレンダリングしたいですRestControllerはレンダリングと

に動作します。

/** 
* But with 
* Spring4 RestController 
* 
*/ 
@RestController 
public class Home { 
    @Autowired 
    private IManager<BaseObject> manager; 
    public void setManager(IManager<BaseObject> manager) { 
     this.manager = manager; 
    } 
    @RequestMapping(value = "/listprovider", method = RequestMethod.GET) 
    public String listProvider() { 
     return this.manager.getAllProvider(); // Message Converter To Json 
     // what about the view? 
     // what is the secret of view resolver in **Spring Rest** 
    } 
} 

答えて

2

@RestControllerは@Controllerと@ResponseBodyの組み合わせです。

@RestControllerを使用すると、レスポンスは暗黙のうちにJson形式で変換され、@ResponseBodyを明示的に宣言する必要はありません。

定義された形式のデータのみを送信するように定義されており、任意のビューの取得は使用できません。

@restcontrollerからページを取得する場合は、ModelandViewまたは を使用して新しいコントローラを作成し、@Controllerで注釈を付けてビュー名を返す必要があります。これにより、ビューリゾルバが検索され、適切なページがレンダリングされます。

春コンフィギュレーションファイルにあなたは以下のようなビューリゾルバを設定する必要が

@Bean 
    public UrlBasedViewResolver urlBasedViewResolver() 
    { 
     UrlBasedViewResolver res = new InternalResourceViewResolver(); 
     res.setViewClass(JstlView.class); 
     res.setPrefix("/WEB-INF/"); 
     res.setSuffix(".jsp"); 
     return res; 
    } 

あなたはコントローラからページ名を返すときに、WEB-INFフォルダに適切なJSPページのリゾルバのルックを表示し、ビューを返します。参照

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/ViewResolver.html

+0

のリンクの下に

私はこのVaibsを知っているが、問題は、春の休憩コントローラとビューを管理する方法ですか? Spring Restのレンダービューの責任者は誰ですか?来るリクエストとビューの間にどのようにマージンを費やすのか? – Yugerten

+0

更新の回答を見てください! – Vaibs