>  기사  >  백엔드 개발  >  SpringMVC가 동일한 이름을 가진 매개변수 바인딩 문제를 해결하는 방법

SpringMVC가 동일한 이름을 가진 매개변수 바인딩 문제를 해결하는 방법

零到壹度
零到壹度원래의
2018-04-04 17:41:451259검색

이 글은 주로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.