В моем весеннем приложении MVC у меня есть уровни, которые могут создавать пользователи. С этими уровнями существуют различные требования, которые необходимо пройти для получения уровня (нужна машина, телефон и т. Д.).
При создании нового уровня пользователь может просмотреть список всех этих требований и переместить эти требования в требуемую область требований (щелкнув по ним, чтобы переместить их назад и вперед от одного деления к другому). Это будет выглядеть примерно так: jsp
<div id="allRequirements">
<c:forEach var="requirement" items="${RequirementList}">
<div class="requirements">
<input type="hidden" value="${requirement.id}" name="id"/>
<h2><c:out value="${requirement.name}"/></h2>
</div>
</c:foreach>
</div>
<div id="requiredRequirements"></div>
RequirementList
- это просто атрибут модели, который возвращает список требований
Модель для уровня и требований выглядит следующим образом:
public class Level {
private String name;
private int id;
private int points
private List<Requirement> requirements;
....
}
public class Requirement{
private String name;
private String id;
....
}
и метод для этого добавления функции в контроллере выглядит следующим образом
@RequestMapping(value = "/level/addNewLevel", method = RequestMethod.POST)
public String addNewLevel(@ModelAttribute("level") Level level, BindingResult result, Model model)
{
validator.validate(level, result);
if(result.hasErrors()) {
//show errors
}
else {
//add level
}
}
Итак, теперь по моей проблеме:
Я могу получить имя, очки, ID и т. Д. Уровня просто отлично, но Требования не подходят вообще. Я попытался вставить <input type='hidden' value='' + id +'' name="requirements"/>
в div, которые находятся в обязательных требованиях при отправке формы и сделать что-то вроде этого
String[] requiredRequirements = ((String) result.getFieldValue("requirements")).split(",");
level.setRequirements(getRequirementsFromIDs(requiredRequirements));
Это работает нормально, пока я не вызову метод validate, потому что в результате привязки требования представляют собой просто список строк (из скрытого поля, называемого требованиями), поэтому он выдает несоответствие типов. Я думал о написании редактора свойств, но это похоже на взлом, чтобы исправить взлом.
Мне было интересно, есть ли у кого-нибудь совет, как решить эту проблему.
Заранее спасибо