0

RequestMapping メソッドを持つコントローラー クラスがあります。このメソッドはレンダリングされていません。コンソールにエラーは表示されません。いくつかの印刷ステートメントで試してみると、リクエストが正しくマップされていると確信しています。しかし、ビューはレンダリングされず、ログにもエラーはありません。ブラウザで HTTP 404 を取得します。他のビューが適切にレンダリングされている場合、何が問題なのかわかりません。次の質問SpringMVCがビューを返す404を提供することを読みましたが、 役に立ちません。

リクエスト マッピング メソッドは次のとおりです。何が問題なのか、それをデバッグする方法がわかりませんか? 私のjspファイルはすべて1つのディレクトリにあります。また、コントローラーにはパブリックのデフォルト コンストラクターもあります。しかし、まだ表示されていないコントローラーに何か問題がある可能性があります。詳細が必要な場合は、より詳細なコードへのリンクを次に示します。 https://github.com/C4G/V2V/blob/cbc4a8d9e904ab1f5bf47b9550a0879ccff33b01/src/controller/TestResultsController.java

  @RequestMapping(value = "/editTestResultFormGenerator", method = RequestMethod.GET)
  public ModelAndView editTestResultFormGenerator(HttpServletRequest request,
      Model model,
      @RequestParam(value="collectionNumber", required=false) Long collectionNumber,
      @RequestParam(value="collectionId", required=false) Long collectionId) {

    TestResultBackingForm form = new TestResultBackingForm();

    ModelAndView mv = new ModelAndView("editTestResultForm");
    Map<String, Object> m = model.asMap();
    m.put("refreshUrl", getUrl(request));
    m.put("existingTestResult", false);
    if (collectionId != null) {
      form.setId(collectionId);
      TestResult testResult = testResultRepository.findTestResultByCollectionId(collectionId);
      if (testResult != null) {
        form = new TestResultBackingForm(testResult);
        m.put("existingTestResult", true);
      }
      else {
        form = new TestResultBackingForm();
      }
    }

    addEditSelectorOptions(m);
    m.put("editTestResultForm", form);
    m.put("refreshUrl", getUrl(request));
    // to ensure custom field names are displayed in the form
    m.put("testResultFields", utilController.getFormFieldsForForm("TestResult"));
    System.out.println(m);
    mv.addObject("model", m);
    return mv;
  }
4

2 に答える 2

1

問題が見つかりました。Eclipse のオートコンプリートで、間違った ModelAndView クラスを選択しました。

選ぶべきだった。

import org.springframework.web.servlet.ModelAndView;

私が選んだのに対し

import org.springframework.web.portlet.ModelAndView;

なるほどね。

于 2012-12-04T18:57:24.980 に答える
0

return mv;リクエスト ハンドラ メソッドの最後に追加する必要があります。

^ (明らかに間違っています。十分に目覚めていませんでした。)

議論後に編集: その特定のコントローラーでは何かが正しくありませんが、メソッドのコードとは関係ありません。あなたの git リポジトリのコードを見た後、明らかなものは何も見当たらないので、問題がどこにあるかを正確に見つけるために大量のログ記録/デバッグを行うことをお勧めします。または、単にそのコントローラーを使用しないでください。:)

于 2012-12-04T18:12:08.697 に答える