2

私は、Spring フレームワークのバージョン 3.1.0 を使用して開発された Web アプリケーションに取り組んでいます。

ユーザーがSELECTドロップダウンリストボックスから国を選択できるフォームを含むJSPページがあります。フォームを送信すると、データベース クエリが実行され、フォームと同じ JSP ページが返されます。このページには、選択した国の著者と機関のデータの HTML テーブルが含まれています。

JSP ページのコードの一部を次に示します。

<c:url var="submitUrl" value="/authorsInstitutes.htm"/>
<form:form action="${submitUrl}" method="POST">
   <select id="countryCode">
      <option value="-1">-- Please Select --</option>
         <c:forEach var="country" items="${countryList}">
            <option value="${country.countryCode}">${country.countryName}</option>
         </c:forEach>
   </select>
   <input type="submit"/>
</form:form>

「GET」および「POST」リクエストを処理するメソッドのコントローラ クラスのコードは次のとおりです。

@RequestMapping(value = "/authorsInstitutes", method = RequestMethod.GET)
public ModelAndView displayAuthorsInstitutesForm() {
    ModelAndView mav = new ModelAndView("authorsInstitutes");

    List<Country> countryList = countrySrv.findAll();
    mav.addObject("countryList", countryList);

    return mav;
}

@RequestMapping(value = "/authorsInstitutes", method = RequestMethod.POST)
public ModelAndView displayAuthorsInstitutes(
    @RequestParam(value = "countryCode") String country) {
    ModelAndView mav = new ModelAndView("authorsInstitutes");

    List<Country> countryList = countrySrv.findAll();
    mav.addObject("countryList", countryList);

    if (country != null && !country.trim().equals("")) {
        List<Affiliation> affiliationList = 
            affiliationSrv.getAffiliationsByCountryCode(country);
        mav.addObject("affiliationList", affiliationList);
    }

    return mav;
}

「GET」リクエストは正常に機能しますが、国を選択してフォームを送信すると、404 エラー メッセージが表示されます。

HTTP ステータス 400 -
タイプ ステータス レポート
メッセージ
の説明 クライアントから送信されたリクエストの構文が正しくありません ()。

単純なことだとは思いますが、私の人生では、何が間違っているのかわかりません。これを解決するための助けをいただければ幸いです、ありがとう。

4

3 に答える 3

0

countryCodePOSTメソッドのマッピングにリクエストパラメータがあるため。コントローラは、パラメータがリクエストで送信されることを期待しています。これは以下のコードにあります

@RequestMapping(value = "/authorsInstitutes", method = RequestMethod.POST)
public ModelAndView displayAuthorsInstitutes(@RequestParam(value = "countryCode") String country) {
 }

jspのselectタグを変更して、このような名前属性を含めます。

<select id="countryCode" name="countryCode">
  <option value="-1">-- Please Select --</option>
     <c:forEach var="country" items="${countryList}">
        <option value="${country.countryCode}">${country.countryName}</option>
     </c:forEach>
</select>
<input type="submit"/>

これにより、選択したオプションにcontryCodeが割り当てられます。これを試してみてください私はそれがうまくいくことを願っています。

于 2012-11-17T00:59:27.283 に答える
0

次のように、url タグの URL からスラッシュを削除する必要があります。

<c:url var="submitUrl" value="authorsInstitutes.htm"/>

jspでスラッシュを含む絶対パスを使用すると、フォームはデータを送信しません。

于 2016-10-26T06:34:10.490 に答える
0

Firebug または同様のツールを使用して、countryCodeパラメーターがサーバーに渡されているかどうかを確認します。また、リクエストマッピングが

@RequestMapping(value = "/authorsInstitutes", method = RequestMethod.POST)

リクエストが送信される場所/authorsInstitutes.htm

于 2012-11-16T18:13:47.740 に答える