フォームに2つのサブミットボタンを投稿しようとしていますが、それぞれのボタンアクションは異なるコントローラにマッピングされています。あなたは、私がクリックされたものをボタン区別するためのparamsの使用に頼っています、私のマッピングから見ることができるようにSpring MVC - フォームへの複数のサブミットボタン
<input type="submit" name="save" class="button" value="Save" />
<input type="submit" name="renew" class="button" value="Renew" />
- ここに私のマッピング
@RequestMapping(value="/save", method=RequestMethod.POST, params="save")
@RequestMapping(value="/save", method=RequestMethod.POST, params="renew")
そして、私のボタンを提出するには、これらのようになります。この問題が発生したとき、不思議
java.lang.IllegalStateException: Ambiguous handler methods mapped for HTTP path 'http://localhost:8090/myapp/save': {public java.lang.String com.myapp.SaveController.save(MyEntity,javax.servlet.http.HttpSession), public java.lang.String com.myapp.SaveController.saveAndRenew(MyEntity,javax.servlet.http.HttpSession)}
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:248)
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:194)
と私はページを再提出するすべてが正常に動作し、その後、 - それは時間の90%に動作しますが、時々、私は以下の例外を取得するという問題があります。私がしようとしていることを達成するためのよりよい方法はありますか?
ありがとうございます!フォームがこれらのボタンは、指定された場合
@RequestMapping(value="/save", method=RequestMethod.POST)
public String handlePost(@RequestParam String action){
if(action.equals("save")){
//handle save
}
else if(action.equals("renew")){
//handle renew
}
}
わからないが、一部のブラウザでは、ユーザーがフォームを送信する場合の任意のボタンのキー/値ペアを送る習慣に注意してくださいEnterキーまたはボタンをクリックする以外の特定の方法を介して。したがって、デフォルトのアクションを想定してください。ブラウザの互換性は、そのフォームのhtmlソースの*最初のボタン*のアクションである必要があります。 – goat