2016-09-03 3 views
0

私は、 'Spring frameworkで始める'(第2版)の本を読んでいます.Ch11-bankappでは、@ModelAttributeの関数はビュー名を返しません。したがって、ビュー名はRequestToViewNameTranslatorによって返されるはずです。エラー - 私は、URL http://localhost:8080/ch11-bankapp/fixedDeposit/listを入力するとき RequestToViewNameTranslatorが機能しません


@Controller 
@RequestMapping(value = "/fixedDeposit") 
public class FixedDepositController { 
    private static Logger logger = Logger 
      .getLogger(FixedDepositController.class); 

    @Autowired 
    private FixedDepositService fixedDepositService; 

    @RequestMapping(value = "/list", method = RequestMethod.GET) 
    @ModelAttribute(value = "fdList") 
    public List<FixedDepositDetails> listFixedDeposits() { 
     logger.info("listFixedDeposits() method: Getting list of fixed deposits"); 
     return fixedDepositService.getFixedDeposits(); 
    } 

は、しかし、それは私にHTTPステータス404を与えます。 コンソールは私に

がorg.springframework.web.servlet.PageNotFoundをWARN次の警告を与えない - 名「のbankappとのDispatcherServletにURI [/ CH11-セッション属性/ fixedDeposit /リスト]でHTTPリクエストが見つかりませマッピングを'

誰かが私の理由を説明できますか?

p.s私は本のソースコードを実行しています。この本はコードが完璧であることを前提としています。しかし、それは動作していません。

+0

'List ではなく、ModelAndViewオブジェクトを返す必要があります。 ''新しいModelAndView( "nameOfJspPage"、 "fdList"、新しいfixedDepositService.getFixedDeposits()); ' –

+0

を返しますが、ModelAndViewオブジェクトを返すと、RequestToViewNameTranslatorの全点が失われます。 @ModelAttribute注釈を使用するにはどうすればよいですか? –

+0

ModelAttributeアノテーションを使用する必要はありません。 –

答えて

0

私は例とその魅力のように動作しようとしました。
ていることを確認し、あなたが行っている、次の

1)viewNameTranslator

何のビュー名が提供されない
<bean id="viewNameTranslator" class="org.springframework.web.servlet.view.DefaultRequestTo‌​ViewNameTranslator"/‌​> 

、RequestToViewNameTranslatorインタフェース>自動的にビュー名を決定を設定します。このためには、設定する必要があります> DefaultRequestToViewNameTranslatorクラスのSpring MVCの設定ファイル内)

2を述べたチュートリアルから撮影 あなたはより他のいくつかのビューリゾルバを設定している場合(あなたのWEB-INF/JSPフォルダの下にフォルダfixedDepositを作成しますこれが解決し、特別な豆です私はFreeMarkerのを使用し、私の場合には例えばのために、そのフォルダ内のfixedDepositフォルダを置く(WEB-INF /テンプレート)、私はそれが同じようにJSPのために働く必要があります願っています)

RequestToViewNameTranslator要求のビュー名。デフォルトでは、要求からURIパスを削除してメディアタイプを削除することによって、ビュー名が解決されます。たとえば、要求がhttp://host:port/context/servlet/some/path/in/the/app.htmlに行われた場合、デフォルトでは、ビューは "app"に解決され、パスと.htmlサフィックスが削除されます。したがって、あなたのビューは、ビューのファイル名は(list.jsp私の場合はlist.ftlこと)と新しいWEB-INF \のjsp \ fixedDepositフォルダ

にして、あなたのビューファイルを配置する必要があります) http://host:port/context/servlet/some/path/in/the/app

3でなければなりません

これでうまくいくはずです。 質問を投稿しながら、完全な背景も教えてください。私は本当にあなたの質問に答えるためにあなたのapplication-context.xmlファイルも見たいと思います。 根本的な例外がある場合は、より詳細なスタックトレースが高く評価されます

+0

Thanks Syed、本当にうまくいきました。 p.s.より多くの質問をするときには、 –

関連する問題