要从JSP中的下拉列表中获取值,以防该值是另一个类的成员

时间:2018-06-01 14:01:36

标签: java spring-mvc jsp dropdown

在这种情况下如何从JSP下拉列表中获取值更好?按“提交”按钮后,现在出现400状态错误。我试图在Google中搜索解决方案,但没有任何可以帮助我的变体。

有一些代码片段属于这个问题。 头等舱:

    public class Item1 {
    private int id;
    private Item2 item2; 

    //getters, setters
}

第二课:

    public class Item2 {
    private int id;
    private String description; 

    //getters, setters
}

头等控制器:

@Controller
public class Item1Controller {
@Autowired
private Item1DAO item1DAO;
@RequestMapping(value = "/saveItem1", method = RequestMethod.POST)
public ModelAndView saveItem1 (@ModelAttribute Item1 item1) {
    item1DAO.addOrUpdateCourse(item1);
    return new ModelAndView("redirect:/item1List");
}
}

JSP表单:

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@page isELIgnored="false" %>
<html>
<head>
    <title>Add New Item1</title>
</head>
<body>
<form:form method="POST" action="/saveItem1" modelAttribute="item1">
    <table>
        <form:hidden path="id"/>
        <tr>
            <td><form:label path="Item2">Item2</form:label></td>
            <td>
    <form:select path="item2">
        <form:option value="null">No Item2</form:option>
        <form:options items="${item2List}"/>
    </form:select>
  </td>
</tr>
<tr>
  <td>
      <input type="submit" value="Save Item1"/>
  </td>
</tr>
</table>
</form:form>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

您应该将“get”和“set”方法(public)放入Item类中。公共构造函数将是一件好事。 我会尝试写相同的路径属性值:description

答案 1 :(得分:0)

path形式有多处错误。每个都必须引用一个简单的字段,而不是复杂的对象。

例如,您需要:

<form:input path="item2.description"/> <!-- not path="description", no description in the Item1 model -->
<form:label path="item2.id">           <!-- not "Item2" by itself, and wrong case -->
<form:select path="item2.id">          <!-- not "item2" by itself -->