如何覆盖子表单中的父表单映射?

时间:2016-04-28 15:07:51

标签: java spring post spring-boot thymeleaf

对不起标题,不知道如何说出来。我有一个表格,在表格中显示一些数据。

<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){...}

问题在于,当我点击按钮&#34;转到不同的页面&#34;时,表单将被映射/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,但父表单不能更改。 有什么建议?

更新 - 我找到并发布了一个解决方案,但直到明天我才能接受!

1 个答案:

答案 0 :(得分:0)

原来有一个非常简单的解决方案。我认为点击的<button>...</button>元素,因为它们在它们导致回发的表单中,而不管指定的URL。

然而,使用一个简单的超链接并将其作为一个按钮来解决问题:

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