从 URL 中发送活动参数<select>



我有html表单。三个<select>标签包含来自数据库的数据。
我希望当我按下按钮时,请求被发送到如下所示的 URL:

/admin/{facultyName}/{specialtyName}/{groupName}
其中facultyName是第一个<select>中的选定值,specialtyName是第二个<select>中的选定值,groupName是第三个<select>中的选定值。
你能给我一个例子来说明如何做到这一点吗?任何选择都会很好,有形式和没有形式。
附言我的尝试:

<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 在生成 HTML 时会填写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">

最新更新