이 글은 주로 SpringMVC가 같은 이름의 매개변수 바인딩 문제를 해결하는 방법을 소개합니다. 편집자는 이것이 꽤 좋다고 생각하므로 지금 공유하고 참고용으로 제공하겠습니다. 에디터를 따라가서 함께 살펴볼까요
예를 들어 제 폼은 다음과 같습니다:
<span style="font-size: 16px;"><form action="/test.action" method="post"> <br> <input name="user.name"> <br> <input name="acc.name"> <br> <input type="submit"> <br></form> <br></span>
Sturts라면 컨트롤러에 user와 acc 객체만 선언하면 해결하기 쉽지만. SpringMVC 바인딩의 매개변수는 스트럿과 다릅니다. 해당 속성 바인딩을 자동으로 찾습니다. 작업이 다음과 같은 경우:
<span style="font-size: 16px;">@RequestMapping("/test.action")<br>public void test(Account account, User user){<br> System.out.println(user);<br> System.out.println(account);<br>} <br></span>
이 경우 오류가 보고됩니다.
여기에서는 @InitBinder 주석이 사용됩니다. 자세한 설명은 관련 정보를 참조하세요. 여기서는 사용 방법에 대해서만 설명합니다. 지정된 이름이
<span style="font-size: 16px;">@InitBinder("account") <br>public void initAccountBinder(WebDataBinder binder) { <br> binder.setFieldDefaultPrefix("acc."); <br>} <br><br>@InitBinder("user") <br>public void initUserBinder(WebDataBinder binder) { <br> binder.setFieldDefaultPrefix("user."); <br>}<br></span>
인 객체에 지정된 시작 식별자의 값을 할당하는 데 사용되는 다음 두 가지 메서드를 Controller 클래스에 추가한 후 작업 메서드를 다음과 같이 변경합니다.
<span style="font-size: 16px;">@RequestMapping("/test.action")<br>public void test(@ModelAttribute("account") Account account, @ModelAttribute("user") User user){<br> System.out.println(user);<br> System.out.println(account);<br>}<br></span>
@ModelAttribute의 매개변수는 위에 정의된 @InitBinder의 값과 일치해야 합니다. 그렇지 않으면 값을 얻을 수 없습니다. P 관련 추천 : rSpringmvc Object Binding Parameter Repent Solution "이유 중 하나
위 내용은 SpringMVC가 동일한 이름을 가진 매개변수 바인딩 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!