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

问题描述 投票:0回答:1

我有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>

html spring url model-view-controller thymeleaf
1个回答
0
投票

这在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">
© www.soinside.com 2019 - 2024. All rights reserved.