在JSP中选择不向Java控制器发送值

时间:2018-07-03 12:28:12

标签: java jsp

我的.JSP文件中的select有问题:

<select class="selectpicker form-control" name="poiCategory" id="poiCategory"
        data-size="10" data-live-search="true">
    <option value="-1">Brak</option>
    <c:forEach items="${categoryList}" var="category">
        <option value="${category.id}" data-tokens="${category.name}">${category.parent.parent.name}
            <b>&rarr;</b> ${category.parent.name}
            <b>&rarr;</b> ${category.name}
        </option>
    </c:forEach>
</select>
  • 引导程序4.1

  • Java Spring MVC

在控制器中:

System.out.println(request.getParameter("poiCategory"));

返回空值...

其他输入正常发送参数。

你能帮忙吗?

2 个答案:

答案 0 :(得分:0)

尝试改用spring MVC <form:select/>

<form:select path="poiCategory">
   <form:option value="-1" label="Brak"/>
   <form:options items="${categoryList}" itemValue="name" itemLabel="category.parent.name"/>
</form:select>

此示例可能需要进行一些更改以满足您的需求,但我认为它应该可以工作。

要使用此标记库,您需要在jsp页面顶部添加以下指令

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

答案 1 :(得分:0)

您需要ModelAttributespring forms来完成工作。

这里是示例代码,其中从下拉菜单中选择了用户,并且在后端接收了它的值。

在JSP中:

<form:form action="someURL" modelAttribute="userform" method="POST">

    <form:select path="username">
        <form:option value="1"></form:option>
        <form:option value="2"></form:option>
        <form:option value="3"></form:option>
    </form:select>
    <input type="submit" />
</form:form>

在控制器中:

public void getSelectedUser(@ModelAttribute UserProfile user) {
        System.out.println("in the select method " + user.getUsername()); // prints value 1/2/3
    }

很少需要注意的是:
1:UserProfile是JAVA类,其字段为“用户名”。

2:我们应该在jsp的modelandview中添加“ userform”作为对象。
   modelAndView.addObject(“ userform”,new UserProfile());

3:以spring形式编写路径并为其分配值,该值也是传递的类的字段。 (在这种情况下,它是“用户名”)。