내 봄 mvc 응용 프로그램에서 사용자가 만들 수있는 수준이 있습니다. 이 수준에서는 취할 수있는 수준의 요구 사항 (자동차, 전화 등 필요)이 있습니다.봄 MVC 바인딩 문제
새 레벨을 만들 때 사용자는 이러한 모든 요구 사항의 목록을보고 해당 요구 사항을 필요한 요구 사항 영역으로 이동시킬 수 있습니다 (한 div에서 다른 div로 앞뒤로 이동하여 해당 요구 사항 영역으로 이동).
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;
....
}
:이
<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>
을 JSP처럼은 다음과 같이 보이는 RequirementList
요구 사항
수준과 요구 사항에 대한 모델의 목록을 반환 단지 모델 속성입니다 조금 보일 것이다
이고 컨트롤러에이 기능을 추가하는 방법은 다음과 같습니다.
@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 등을 얻을 수 있지만 요구 사항은 전혀 나오지 않습니다. 나는이
String[] requiredRequirements = ((String) result.getFieldValue("requirements")).split(",");
level.setRequirements(getRequirementsFromIDs(requiredRequirements));
내가 때문에 바인딩 결과에 validate 메소드를 호출 할 때까지이 잘 작동, 요구 사항이 그냥 양식을 제출하고, 같이 뭔가를 할 때 requiredRequirements에있는 div의에서 <input type='hidden' value='' + id +'' name="requirements"/>
을 삽입하려 요구 사항이라는 숨겨진 필드의 문자열 목록이므로 형식이 일치하지 않습니다. 속성 편집기를 작성하는 것에 대해 생각했지만 해킹 문제를 해결할 수있는 해킹처럼 보입니다.
누구든지이 문제를 해결하는 방법에 대한 조언이 있는지 궁금합니다. 이 상황에 대한 때에 프로퍼티 편집기 (또는 더 나은 봄 3 변환기)를 작성 미리
속성 편집기는 어떻게하는지, 왜 해킹이라고 생각합니까? – Affe
봄을 시험해 보셨나요? http://mattfleming.com/node/134 –
@Affe 내 상황에 대한 해킹처럼 보입니다. –