2013-07-11 2 views
0

스프링 mvc를 사용하고 있습니다. 컨트롤러에서 매개 변수를 Java Bean Order로 가져 오려고합니다. 주문 빈에는 여러 매개 변수가 있으며 그 중 하나는 dueDate (java.util.Date)입니다.자바 빈으로 바인딩 할 때 spring mvc에서 400 오류를 피하는 방법

@RequestMapping("/toAddOrder") 
public ModelAndView addOrder(Order order, BindingResult bindingResult){ 
    return new ModelAndView("redirect:toViewOrder"); 
} 

@InitBinder 
protected void initBinder(
     WebDataBinder binder) throws ServletException { 
    binder.registerCustomEditor(byte[].class, 
      new ByteArrayMultipartFileEditor()); 

    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
      dateFormat.setLenient(false); 
      binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false)); 
} 

컨트롤러에 양식을 제출하기 전에 dueDate에 값을 설정하지 않으면 문제가 발생합니다. 그러면 오류가 발생합니다. dueDate가 null이거나 ""이므로 BAD_REQUEST입니다.

그래서,이 문제를 피하는 방법을 알고 싶습니다. 찾을 수있는 해결책은 다음과 같습니다. 1. 양식을 제출하기 전에 js를 확인하십시오. 2. HttpServletRequest의 요청에서 내가 지난 2 개 솔루션을 찾을

추가 질문에 매개 변수를 가져, 순서와 결합하지. Order Bean에 매개 변수가 너무 많아서 값을 가져오고 설정하기 위해 긴 코드를 작성해야하므로 나중에로드가 늘어날 수 있습니다.

+0

나는 그것이 도움이된다고 생각한다. http://stackoverflow.com/questions/11118023/how-to-allow-null-date-in-spring-3-mvc/12476932#12476932 – mokshino

+0

나는이 문제를 해결했다. 그러나 나는 새로운 문제를 만난다. –

답변

0

이 문제를 해결했습니다. 왜냐하면 나는 Spring MVC를 처음 접했기 때문이다. 나는 여러 가지 방법을 시도했다. 하지만 같은 문제를 만난다면 다음의 방법이 도움이 될 것이라고 생각합니다.

는 컨트롤러

@InitBinder 
protected void initBinder(WebDataBinder binder) throws ServletException { 
      SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
      dateFormat.setLenient(false); 
      binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false)); 
} 

에 추가하지만 난 새로운 질문을 만난다.

""값으로 양식을 제출하는 경우. 항상 오류가 발생합니다. 코드 유형이 일치하지 않습니다..

이미 message.properties 파일

#bean level error message 
typeMismatch.order.dueDate = order.dueDate format not match "YYYY-MM-DD" 

#global type not match message 
typeMismatch = data type not match 

하지만 페이지의 머리에 오류 메시지를 인쇄 할 때, 난 항상 얻을 코드 TypeMismatch 예외에 configed

하지만 typeMismatch.order.dueDate .

<#if error?has_content> 
    <#list error.allErrors as item> 
     <@spring.message "${item.code?if_exists}"/><br/> 
    </#list> 
</#if> 

누구나이 질문을 해결하는 방법을 알고 있습니까?