我想使用选择框重定向到包含选择值的网址。
以下是带有百万美元变量的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)
});
});
谢谢。
答案 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