2013-06-21 2 views
0

텍스트 입력란 (사용자 이름, 성 ..)과 여러 국가가있는 사용자 편집 양식이 있습니다. 나는 그것을 채우는 더 좋은 방법을 모르기 때문에이 선택에 문제가있다. jquery 성공으로 채우려고했지만 commandname을 통해 기본값을 선택할 수 없습니다.양식을 채우는 방법 : 기본값을 선택하고 선택 하시겠습니까?

<form:form method="POST" commandName="user" action="registerUser.html"> 
<form:errors path="*" cssClass="errorblock" element="div" /> 
    <spring:message code="app.user.username"/><form:input path="username" /><form:errors path="username" cssClass="error" /><br/> 
    <spring:message code="app.user.firstname"/> <form:input type="text" path="firstName" /> <form:errors path="firstName" cssClass="error"/><br/> 
    <spring:message code="app.user.password"/> <form:input type="password" path="password" /><form:errors path="password" cssClass="error"/><br/> 
    <spring:message code="app.user.repassword"/> <form:input type="password" path="confirmPassword" /><form:errors path="confirmPassword" cssClass="error"/><br/> 
    <spring:message code="app.user.email"/> <form:input type="text" path="email" /><form:errors path="email" cssClass="error"/><br/> 
    <spring:message code="app.user.country"/> <form:select path="isoCode" items="${countryList}"/><form:errors path="isoCode" cssClass="error"/><br/> 
    <input type="submit" value="Enviar" /> 
</form:form> 

나는이 tutorial에 살펴보고, 그래서 내가지도와 시도했다하지만 난 때문에 튜토리얼에서 JSP에 accesible로 데이터를 반환하는 방법을 모른다는 SimpleFormController 같은를 사용하지만 나는 각 폼에 SimpleFormController를 코딩하고 싶지 않다. 이것은 내 컨트롤러 양식의보기를 반환하고 나는 다른 제출을 잡을있다.

@RequestMapping(method=RequestMethod.GET, value="/editUserForm") 
public String recordUserRequestHandler(ModelMap model) throws Exception { 
    model.addAttribute("user", new User()); 
    Map<String, Map<String, String>> referenceData = new HashMap<String, Map<String, String>>(); 
    Map<String, String> country = new LinkedHashMap<String, String>(); 
    country.put("US", "United Stated"); 
    country.put("CHINA", "China"); 
    country.put("SG", "Singapore"); 
    country.put("MY", "Malaysia"); 
    referenceData.put("countryList", country); 
    return "EditUserForm"; 
} 

referenceData를 jsp에 전달하여 다음 형식으로 액세스 할 수 있습니까? select?

<spring:message code="app.user.country"/> <form:select path="isoCode" items="${countryList}"/><form:errors path="isoCode" cssClass="error"/><br/> 

답변

2

또한 선택 사항에 hashmap을 사용할 필요가 없습니다. 개인적으로 나는 나의 선택 옵션을 보유하고있는 빈들과 함께 간단한 List를 사용한다.

public class ListOption { private String id; 전용 문자열 이름. 컨트롤러

List<ListOption> selectOptions = new List<ListOption>(); 
// add Your options 
selectOptions.add(new ListOption("id","value"); 

public ListOption(String id, String name) { 
    this.id = id; 
    this.name = name; 
} 

public ListOption() { 
} 

public String getId() { 
    return id; 
} 

public void setId(String id) { 
    this.id = id; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

}

그 다음 스프링 선택으로 값을 표시하는 관리 할 목적 (일부) 값 모델로 isoCode 객체 넣어. 당신의 JSP에서

내가 그것을 시도 할 것이다 @Josef

<form:select path="isoCode" items="${countryList}" itemValue="id" itemLabel="name"/> 
+0

매우 흥미로운 aproach. 모델 데이터에 맵을 추가하여이를 해결했습니다. 솔루션으로 내 자신의 게시물을 편집 하겠지만 응답을 귀찮게 받아들이므로 올바른 해결책을 수락합니다. 감사합니다 – mannuk

+0

당신은 환영합니다 :-) –

+0

그것은 좋은 작품, 감사합니다. 목록 옵션과 같은 유틸리티를 어디에 둘까요? 내가 다른 사람들에게 json 목록의 루트를 추가하는 방법이 있기 때문입니다. 좋은 연습을하고 싶습니다 – mannuk

관련 문제