Thymeleaf + Spring如何从表单选择选项值传递给控制器​​@PathVariable

时间:2016-09-20 09:50:07

标签: spring thymeleaf path-variables

我想使用选择框重定向到包含选择值的网址。

以下是带有百万美元变量的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){...}

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

请您解释一下如何将选择值添加到控制器所需的URL中?

感谢您提示

编辑@NicolaiEhemann回答

我使用jquery和ajax移动到javascript:

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

谢谢。

2 个答案:

答案 0 :(得分:1)

Thymeleaf只会生成静态HTML代码。为了达到你想要的效果,你必须编写客户端javascript来处理&#39;输入&#39;事件事件,当选择了不同的值时更改表单操作,或处理表单提交&#39; event覆盖表单提交的默认操作。相关的js代码可能取决于您使用的框架。

答案 1 :(得分:0)

简单地,将path变量添加到带有双uderscore的form动作中 即将<form th:action="@{/app/}">替换为<form th:action="@{/app/__${app.id}__">

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