我有html表格。三个 <select>
标签有来自数据库的数据。我希望当我按下按钮时,请求会被发送到一个类似于这样的URL。/admin/{facultyName}/{specialtyName}/{groupName}
哪儿 院系名称 是在第一个 <select>
, 专业名称 是第二种情况下的选定值。<select>
, 组名 是第三种情况下的选定值。<select>
. 请你能给我举个例子说明怎么做?任何方案都可以,有形式和无形式的都可以。 P.S.我的尝试。
<form name='f' action="#" th:action="@{/admin/(faculty=${facultyName})/(specialty=${specialtyName})/(group=${groupName})}" th:object="${schedule}" method='POST'>
<table>
<tr>
<td>
<select th:field="*{facultyName}">
<option value="">Не выбран</option>
<option th:each="faculty : ${facultyAll}"
th:value="${faculty.facultyName}"
th:utext="${faculty.facultyName}">
</option>
</select>
</td>
</tr>
<tr>
<td>
<select th:field="*{specialtyName}">
<option value="">Не выбран</option>
<option th:each="specialty : ${specialtyAll}"
th:value="${specialty.specialtyName}"
th:utext="${specialty.specialtyName}">
</option>
</select>
</td>
</tr>
<tr>
<td>
<select th:field="*{groupName}">
<option value="">Не выбран</option>
<option th:each="group : ${groupAll}"
th:value="${group.groupName}"
th:utext="${group.groupName}">
</option>
</select>
</td>
</tr>
<tr>
<td><input type="submit" class="btn btn-primary" value="Work with this group"></td>
</tr>
</table>
这在Thymeleaf中是不可能的。Thymeleaf会填写 action
属性,但不会即时更新。
您需要使用Javascript来更新 action
属性动态地重定向用户。
另一个选择是有一个固定的URL,并从服务器动态重定向用户。
@Controller
public class AdminController {
@GetMapping("/admin/select")
public String selectAdmin(Model model) {
model.addAttribute("selectionCriteria", new AdminSelectionCriteria());
}
@PostMapping("/admin/select")
public String doSelectAdmin(@ModelAttribute("selectionCriteria") AdminSelectionCriteria criteria) {
// check the 3 fields in AdminSelectionCriteria
if( ... )
return "redirect:/admin/.../";
else if( ... )
return "redirect:/admin/../";
...
}
}
在模板中,你可以使用
<form name="f" th:action="@{/admin/select}" th:object="selectionCriteria">