2016-04-28 2 views
1

タイトルには申し訳ありませんが、言葉の使い方はわかりません。私はテーブルにいくつかのデータを表示するフォームを持っています。子フォームで親フォームマッピングをオーバーライドする方法は?

<form action="#" th:action="@{/do/stuff}" th:object="${foo}" method="post"> 
    <table> 
     .... 
     <tr th:each="currentFoo : *{fooList}"> 

     <td>...<td> 
     <td> 
      <a th:href="'/anotherPage/' + ${currentFoo.getId()}"> 
       <button>Go to Different page</button> 
      </a> 
     </td> 
    ... 
    </table> 
    <button type="submit" value="submit">Submit</button> 
</form> 

そしてコントローラ:

@RequestMapping(value="/do/stuff", method = RequestMethod.POST) 
public String processQuery(@ModelAttribute FooWrapper wrapper, Model model){....} 

@RequestMapping(value="anotherPage/{fooID}", method=RequestMethod.GET) 
public String getClient(@PathVariable int id, Model model){...} 

問題は、私は、「別のページに移動します」ボタンをクリックすると、フォームがポストマッピング/do/stuffによってピックアップされていることです。

getでIDを渡して、全く別のページに移動するボタンを持つことができます(すべてのエントリを投稿する標準オプションとともにエントリを編集するオプションがあると思います)。ページに到達するだけですanotherPage/{fooID}

ボタンフォームを追加しようとしましたが、親フォームをオーバーライドして、希望するマッピングにgetリクエストを行いますが、機能しませんでした。それはすべて外形によって取り上げられます。

<form th:action="'/anotherPage/' + ${currentFoo.getID()}" style="display: inline" th:method="get"> 
    <input type="submit" th:value="Go to Page" role="button" /> 
</form> 

これも可能ですか?子供の方法をpostに変更することもできますが、親フォームは変更できません。 提案がありますか?

更新 - 私は解決策を見つけて投稿しましたが、明日まで受け入れることができません。

+0

が、それはフォームの外に「行く別のページへ」のボタンを引くことが可能である。しかし

、シンプルなハイパーリンクを使用して、ボタンとしてそれをドレッシングは、問題を解決しましたか? – ndrone

+0

@ndroneボタンがテーブルの各行に対して動的に生成される必要があるとは思わないし、 ''の前にフォームタグを終了することでテーブルを分割することはできないと確信しています。 Javaスプリングはフォーム内の '

...
'タグを分割することはできません(そのすべてかどうか) - 意味がある場合 – gudthing

答えて

0

非常に簡単な解決策があります。私は、<button>...</button>要素は、指定されたURLに関係なく、ポストバックを引き起こしていたフォームの中にあったので、クリックされたときにその要素が思える。

<a th:href="'/anotherPage/' + ${currentFoo.getID()}" class="btn btn-default">Go to page</a> 
関連する問題