2016-08-26 4 views
0

私はSpringの注釈について学ぶために、オンラインチュートリアル(gontuシリーズ)に従っていた簡単なアプリケーションを使って作業しています。Spring ViewResolverが不正なビューにマッピングされています

私は、Spring-dispatcher-servletからのすべての呼び出しを処理するStudentAdmissionControllerというコントローラクラスを持っています。注釈は次のとおりです。私は読みやすいようにスニペットを表示しています。

@RequestMapping(value="/admissionForm.html", method=RequestMethod.GET) 
public ModelAndView getAdmissionForm() { 

    ModelAndView model = new ModelAndView("admissionForm"); 
    return model; 
} 

これは、2つのフィールドを収集するadmissionForm.jspというJSPを起動します。この部分はうまく動作します。 JSP内の私の<form>タグはこのように見えます。

<form action="/FirstSpringMVCProject/submitAdmissionForm.html" method="post"> 

私のコントローラには、このように見えるこの提出物を処理するアノテーションがあります。それは、ディスパッチャサーブレットに戻ったとき、(注釈の名前です)submitAdmissionForm.jspというページを表示しようとしているいくつかの奇妙な理由で、

@RequestMapping(value="/submitAdmissionForm.html", method=RequestMethod.POST) 
public ModelAndView submitAdmissionForm(@RequestParam("studentName") String  name, @RequestParam("studentHobby") String hobby) { 

    ModelAndView model = new ModelAndView("admissionSuccess"); 

    logger.info("Returning " + model.getViewName()); 
    model.addObject("msg", "Details submitted by you:: Name: " + name + ", Hobby: " + hobby); 

    return model; 

} 

なぜこれを行うのか分かりません。注釈がちょうどビュー(admissionForm)と同じ名前になったので、GETの注釈は正常に機能します。私はロガーのステートメントを入れ、デバッグでは、モデルに提供されているビューがadmissionSuccess.jspというファイルを実行したい正しいもの(admissionSuccess)のように見えます。しかし、viewResolverはsubmitAdmissionForm.jspというファイル(存在しない)を実行しようとしています。ちょうど私が注釈を呼び出したものとまったく同じです。それはどのように働くはずではありません....

私はYoutubeに従っていた例はうまくいきます...私のディスパッチャのビューリゾルバでは何が起こっているのですか?サーブレット...助けてください。

ディスパッチャーサーブレットは次のようになります。

<context:component-scan base-package="com.gontuseries.studentadmissioncontroller" /> 

<mvc:annotation-driven/> 


<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver" > 

    <property name="prefix"> 
     <value>/WEB-INF/</value> 
    </property> 
    <property name="suffix"> 
     <value>.jsp</value> 
    </property> 


</bean> 
+0

はあなたのWEB-INFおよびweb.xmlファイル内のjspの場所を共有してくださいすることができますか..? –

答えて

0

@RequestMapping(value="/submitAdmissionForm.html", method=RequestMethod.POST)あなたがする彼に尋ねる何ん:POST HTTPメソッドとHttpRequestを処理していない、そしてより多くのあなたのsubmitAdmissionForm.html何もここでは、これらの要求を処理するためのマッピングを設定していない、あまり何も。

別のビューを表示する場合は、ModelAndViewのビュー名をmodel.setView("admissionSuccess");などに設定して返します。それは素晴らしいことでしょう;)

は、任意の成功の景色を返す前に、すべての結合のエラーがフォームに設定されているかどうかをチェックすることを忘れないでください:)

編集:あなたのコード内でより深い探している、それは大丈夫に見えます。しかし、通常私は同じハンドラ名を入れ、editSubmitStudent()と組み合わせたeditStudent()のような異なるメソッド名を使用しますが、私の場合は同じURLハンドラeditStudent.doを指していますが、あなたのケースではeditStudent.htmlを好むようです。 )

OK:JSPフォームタグのアクションを<c:url value="/admissionForm.html" var="admissionFormUrl">に設定し、これを使用してフォームform action=${admissionFormUrl}をハンドラマッピングに送信します。その問題を解決します。

乾杯!

0

ご返信ありがとうございます。私は自分の問題を理解した。とてもばか。クラスファイルの先頭に間違ったライブラリをインポートしました。

これは私が

輸入org.springframework.web.servlet.ModelAndViewを輸入しているはずです。

私は偶然、この代わりに、1

輸入org.springframework.web.portlet.ModelAndViewを選択した

だからこそ、それは間違っていた...私はそれを変更した、それは正常に動作しています。

よろしく、

アジット

関連する問題