0

MVC テンプレートを使用して Spring MVC プロジェクトを作成しましたが、テキスト入力から値を取得できません。誰も私にそれを行う方法をアドバイスできますか? プロジェクトの構造を含む home.jsp のソースは、以下のスクリーンショットで確認できます。AdminController クラスのコードは次のとおりです。

@Controller
@RequestMapping(value = "/foo")
public class AdminController {

@RequestMapping(value = "/bar")
public String testAction(@RequestParam String fieldName) {
    // yourValue contain the value post from the html form
    return "yourview";
    }
}

これは、パッケージ エクスプローラーのスクリーンショットと home.jsp のソースです。

プロジェクトをデプロイすると、アドレスで開始されますhttp://localhost:8080/test/。どこで別のものに変更/test/しますか?そして、送信ボタンを押した後、ブラウザは転送しhttp://localhost:8080/foo/barて表示しますHTTP status 404

4

2 に答える 2

1

404:

フォーム マッピングは絶対的です

<form ... action="/foo/bar">

これがヒットしている理由であり、コンテキスト パスが404http://localhost:8080/foo/barであるアプリが展開されていません。/foo

これを修正するには、Spring を使用してコンテキスト パスを追加します。

<spring:url value="/foo/bar" var="form_url" />
<form ... action="${form_url}" method="POST">

フィールド名:

testAction 引数にマップするリクエスト パラメータを特定する必要があります。

@RequestMapping(value = "/bar", method=RequestMethod.POST)
public String testAction(@RequestParam(value="fieldName") String fieldName) {
  // yourValue contain the value post from the html form
  return "yourview";
}

/テスト:

Tomcat サーバーを使用してアプリを実行しているようです。これは、/${project.artifactId} (デフォルト) を使用してアプリを開始するように pom.xml で構成されている可能性があります。ここで、アーティファクト ID は「test」です。( http://mojo.codehaus.org/tomcat-maven-plugin/run-mojo.html#path )。Maven プラグインを構成することで、別の値を指定できます。

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>tomcat-maven-plugin</artifactId>
    <configuration>
      <path>WHATEVER</path>
    </configuration>
  </plugin>
于 2013-03-05T13:14:04.497 に答える
1

ここに投稿された写真を見てください。コントローラーのリクエスト マッピングは /bar であり、フォーム アクションは /foo/bar として言及されています。これが間違いかどうかを確認してください。スプリングアクションメソッドにもリクエストメソッドを提供。

URL localhost:8080/foo/bar を使用してアプリケーションにアクセスしているので、それを見ていくつか変更することをお勧めします。

コントローラーから RequestMapping タグを削除します。そのはず :

@Controller    
public class AdminController {

    @RequestMapping(value = "bar", method=RequestMethod.POST)
    public String testAction(@RequestParam String fieldName) {
      // yourValue contain the value post from the html form
       return "yourview";
    }
}

また、action="bar" のようなフォーム アクション名を付けます。

于 2013-03-05T12:59:37.140 に答える