Получить значение из раскрывающегося списка в JSP, если значение является членом другого класса - PullRequest
0 голосов
/ 01 июня 2018

Как было бы лучше получить значение из выпадающего списка в 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 голосов
/ 01 июня 2018

У вас есть несколько ошибок в форме path s.Каждый должен ссылаться на простое поле, а не на сложный объект.

Например, вам нужно:

<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 -->
0 голосов
/ 01 июня 2018

Вы должны поместить методы "get" и "set" (public) в классы Item.Общественный конструктор был бы хорошей вещью.Я бы попытался написать то же значение атрибута пути: описание

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...