Thymeleaf + Spring 如何从表单 select 选项值向控制器传递 @PathVariable

Thymeleaf + Spring how to pass to a controller a @PathVariable from a form select option value

我想使用 select 框重定向到包含 select 值的 URL。

这里是带有 thymeleaf 变量的 HTML 页面:

<form th:action="@{/app/}">
    <select id="app" name="app">
        <option th:each="app : ${apps}"
            th:value="${app.id}"
            th:text ="${app.name}">
        </option>
    </select>
    <button>Go</button>
</form>

控制器写法如下:

@RequestMapping("/app/{appId}")
public ModelAndView getApp(@PathVariable String appId){...}

我的目标是使用 URL 访问控制器:mydomain/app/{app.id}/ 我尝试在 select 上使用 th:field 但没有成功。我在这里遗漏了一些东西。

拜托,你能解释一下如何将 select 值添加到控制器期望的 URL 中吗?

感谢您的提示

编辑@NicolaiEhemann 回答

我使用 jquery 和 ajax 移动到 javascript :

$('button').click(function() {
    $.ajax({
        url: '/app/' + $('#app').val(),
        dataType: 'html'
    }).done(function(data) {
        $('#result').html(data)
    });
});

谢谢。

Thymeleaf 只会生成静态 html 代码。要实现您想要的效果,您必须编写客户端 javascript 来处理 'input' 事件以在选择不同的值时更改表单操作,或者处理表单 'submit' 事件以覆盖表单提交的默认操作。相关的js代码可能会依赖于你使用的框架。

简单地说,将路径变量添加到带有双uderscores的表单操作中 即用 <form th:action="@{/app/__${app.id}__">

替换 <form th:action="@{/app/}">

来源:http://forum.thymeleaf.org/Sending-pathvariable-to-controller-td4028739.html