2014-05-12 2 views
0

에서 부울 값을 설정 :JSP 내가 모델이 형식

public class Header { 
    private Boolean SERVICE; 
} 

컨트롤러 :

@RequestMapping("mymodel/Edit") 
public ModelAndView mymodelEdit(
     @ModelAttribute("mymodel") Mymodel mymodel, 
     @RequestParam String id) {  

    Mymodel old_mymodel = mymodelService.getMymodel(id); 
    Map<String, Object> map = new HashMap<String, Object>();    
    map.put("old_mymodel", old_mymodel); 
    return new ModelAndView("mymodel/mymodelEditView", "map", map); 
} 

JSP 양식

<c:set var="old_mymodel" value="${map.old_mymodel}" /> 
<form:form method="POST action="/mymodel/Save" modelAttribute="mymodel"> 
    <tr> 
     <td>Сервис :</td> 
     <td> 
      <form:checkbox path="SERVICE" value="${old_mymodel.SERVICE}">     
      </form:checkbox> 
     </td> 
    </tr> 
    <tr> 
     <td>&nbsp;</td> 
     <td><input type="submit" value="Save" /></td> 
    </tr> 
    </table> 
</form:form> 

내 문제 : 나는에서 값을 설정할 수 없습니다 db가 값을 형성 할 때, 즉 SERVICE 값이 true 일 때, 체크 박스는 선택되지 않습니다.

답변

1

모델 액세스 방법은 사용자가 입력 한 방식과 일치하지 않습니다.

나는 당신이 코드를 변경 제안 :

@RequestMapping("mymodel/Edit") 
public ModelAndView mymodelEdit(
     @ModelAttribute("mymodel") Mymodel mymodel, 
     @RequestParam String id) {  

    Mymodel old_mymodel = mymodelService.getMymodel(id); 
    return new ModelAndView("mymodel/mymodelEditView", "model", old_mymodel); 
} 

Mymodel 같은 것을 보이는 것을 가정한다

:

public class Mymodel { 
    private Header old_header; 
} 

이 또한있을 수 있습니다 이름과 몇 가지 문제가 당신 모델의 여러 부분에서 사용되었습니다. 난 강력하게 당신이 변수 맵의 값을 설정하는

+0

그건 거짓말이야. 양식 코드에 오류가 있습니다. – zond

+0

@zond 좋아, 잘 듣고 반가워. – geoand

0

먼저

<c:set var="old_header" value="${map.old_mymodel}" /> 

그래서이 변수가 매핑되지 사용하여 SERVICE 부울 값에 액세스 할 필요가 아래처럼 자바 빈즈 명명 규칙을 준수하는 것이 좋습니다. 당신이 코드를 아래에 가정 old_mymodel,

을 사용하는 경우 너무

이 아래

<td><form:checkbox path="SERVICE" value="${old_header.SERVICE}"></form:checkbox></td> 

대신

<td><form:checkbox path="SERVICE" value="${old_mymodel.SERVICE}"></form:checkbox></td> 

처럼 액세스해야 올바른 모델을 반환

Mymodel old_mymodel = mymodelService.getMymodel(id);