【问题标题】:Getting selected option value from controller in Spring MVC从 Spring MVC 中的控制器获取选定的选项值
【发布时间】:2016-06-16 09:31:19
【问题描述】:

我正在制作一个 Spring MVC 项目,我的 .jsp 中有这个表单

JSP

 <form:form action="/admin/assign/add" modelAttribute="cafeTable">
    <table>
        <tr>
            <td>
                <form:label path="tableNumber">
                    <spring:message text="Table's Number"/>
                </form:label>
            </td>
            <td>
            <form:select path="tableNumber" action = "select">
                <form:options items="${tableNumbers}"></form:options>
            </form:select>
            </td>
        </tr>
        <tr>
            <td>
                <form:label path="${user.fullName}">
                    <spring:message text="Waiter's name"/>
                </form:label>
            </td>
            <td>
            <form:select path="${user.fullName}" action = "select">
                <c:forEach items="${listUser}" var="user">
                    <option value="${user.fullName}">${user.fullName}</option>
                </c:forEach>
            </form:select>
            </td>
        </tr>
    </table>
    <br>
    <input type="submit" name="assign"
           value="<spring:message text="Assign"/>"/>
</form:form>

所以我有UserCafeTable 模型,但我的模型属性是CafeTable

使用提交按钮,我需要在我的控制器中获取两个选定的值:

    @RequestMapping(value = "/admin/assign/add", params = "assign", method = RequestMethod.POST)
public String assign(@ModelAttribute("cafeTable") CafeTable cafeTable) {

    //set cafeTable's UserID field matching selected fullName value

    tableService.addTable(cafeTable);
    return "admin";
}

我该怎么做?

【问题讨论】:

  • 目前你得到的值是多少? CafeTable 应该包含 tableNumber 属性,并且应该填充值
  • 是的,CafeTable 确实包含 tableNumber,但我还需要获取用户 ID(通过获取用户的全名),以便我可以设置 CafeTable 的 UserID 字段。

标签: java jsp spring-mvc


【解决方案1】:
 <form:form action="/admin/assign/add" modelAttribute="cafeTable">
    <table>
        <tr>
            <td>
                <form:label path="tableNumber">
                    <spring:message text="Table's Number"/>
                </form:label>
            </td>
            <td>
 <input type="hidden" value="${user.fullName}" name="fullname">
            <form:select path="tableNumber" action = "select">
                <form:options items="${tableNumbers}"></form:options>
            </form:select>
            </td>
        </tr>
        <tr>
            <td>
                <form:label path="${user.fullName}">
                    <spring:message text="Waiter's name"/>
                </form:label>
            </td>
            <td>
            <form:select path="${user.fullName}" action = "select">
                <c:forEach items="${listUser}" var="user">
                    <option value="${user.fullName}">${user.fullName}</option>
                </c:forEach>
            </form:select>
            </td>
        </tr>
    </table>
    <br>
    <input type="submit" name="assign"
           value="<spring:message text="Assign"/>"/>
</form:form>

如果您在 CafeTable 中没有 fullname 属性,请尝试在 form:form 中添加一个隐藏字段

<input type="hidden" value="${user.fullName}" name="fullname">

并将可选的请求参数添加到您的控制器中,如下所示

 @RequestMapping(value = "/admin/assign/add", method = RequestMethod.POST)
        public String save(@RequestParam("fullname") String fullname,@Valid @ModelAttribute("cafeTable") CafeTable cafeTable) {

//now you can access full name from fullname variable here

            ....
        }

我没有测试过这段代码。

【讨论】:

  • 但是 fullName 是用户的财产,而不是 CafeTable 的,我如何从 CafeTable 获得它?
猜你喜欢
  • 1970-01-01
  • 2021-05-09
  • 1970-01-01
  • 2013-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多