박근혜
4k
2012-06-20 10:22:42
2
3914

@RequestParm에 대한 질문


컨트롤러의 @RequestMapping으로 된 메서드에 String fileName 이런식으로 붙이면
@RequestParam없이도 fineName에 해당하는 데이터가 들어가게 됩니다.

이게 로컬서버에서는 잘 동작하는데 서버에서는 fileName에 해당하는 것이 없다고 exception이 납니다.
그래서 RequestParam("fileName") String fileName 으로 명시를 해둡니다.
이거 왜 그런건가요?
0
  • 답변 2

  • 박근혜
    4k
    2012-06-20 11:32:12
    No parameter name specified for argument of type [long], and no parameter name information found in class file either.
  • benelog
    68
    2015-03-25 10:23:20
    아마 서버에 배포하는 빌드에서 compile옵션으로 디버깅 정보가 빼는걸로 되어 있지 않은지 확인해보는것이 좋을듯합니다.

    Maven이라면 아래와 같은 식으로요 debug=false가 되어 있다면 위와 같은 현상이 발생합니다.

    <plugins>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
           <configuration>
             <source>1.6</source>
             <target>1.6</target>                   
             <debug>false</debug>
             <optimize>true</optimize>
             <encoding>utf-8</encoding>
           </configuration>
         </plugin>
    </plugins>


    Default는 debug=true이므로,  해당 라인을 삭제하시면 local과 서버에서 같은 결과가 나올것 같습니다.


    자세한 내용은  http://gubok.tistory.com/382 에도 설명되어 있고, Spring의 메뉴얼에도 나와는 있습니다.

    http://docs.spring.io/spring/docs/3.1.x/spring-framework-reference/html/mvc.html

    Or if the URI template variable name matches the method argument name you can omit that detail. As long as your code is not compiled without debugging information, Spring MVC will match the method argument name to the URI template variable name:

    @RequestParam과 @PathVariable 모두 같은 원리입니다.

    작년에 KSUG 세미나에서도 이에 대해 공유드린적이 있습니다.

    http://www.slideshare.net/benelog/ss-35627826
  • 로그인을 하시면 답변을 등록할 수 있습니다.