[SPRING] Spring MVP의 RequestParam 값은 대 / 소문자를 구분하지 않습니다.
SPRINGSpring MVP의 RequestParam 값은 대 / 소문자를 구분하지 않습니다.
쿼리 문자열을 사용하여 JSP에서 컨트롤러로 데이터를 보냅니다.
내 컨트롤러는 주석으로 구동됩니다.
요청 매개 변수의 값은 대소.자를 구분하지 않아야합니다.
환영 페이지에 사용하는 방법은 다음과 같습니다.
public String welcome(@RequestParam("orgID") String orgID, ModelMap model)
요청 매개 변수 "orgID"는 대소 문자를 구분하지 않아야합니다. 이 작업을 수행하는 방법?
쿼리 문자열을 "orgid"또는 "orgId"로 지정할 수 있어야합니다. 매개 변수는 대소 문자를 구분하지 않아야합니다. 당신의 도움 친구들을 찾고 있습니다.
미리 감사드립니다 :-)
해결법
-
==============================
1.간단한 해결 방법이 있습니다. HttpServletRequest에서 직접 작동하고 getParameter () 메서드를 사용하여 모든 매개 변수 버전을 확인할 수 있습니다.
간단한 해결 방법이 있습니다. HttpServletRequest에서 직접 작동하고 getParameter () 메서드를 사용하여 모든 매개 변수 버전을 확인할 수 있습니다.
public String welcome(HttpServletRequest request, ModelMap model){ String orgID = extractOrgId(request); //rest of your code } private String extractOrgId(HttpServletRequest request){ if(request.getParameter("orgId") != null){ return request.getParameter("orgId"); } // and so on }
-
==============================
2.당신은 당신의 URL과 일치하는 전쟁 봄을 바꾸어 봐야 할 것입니다. 당신은 Spring에 전달하기 전에 매개 변수를 소문자로 만드는 필터 (아마도 DelegatingFilterProxyBean)를 만들거나 경로가 일치하는 방식을 변경하려고 할 수 있습니다.
당신은 당신의 URL과 일치하는 전쟁 봄을 바꾸어 봐야 할 것입니다. 당신은 Spring에 전달하기 전에 매개 변수를 소문자로 만드는 필터 (아마도 DelegatingFilterProxyBean)를 만들거나 경로가 일치하는 방식을 변경하려고 할 수 있습니다.
두 번째 옵션에 대한 설명은 Spring MVC에서 주석이 달린 매핑을 사용하여 대소 문자를 구분하지 않는 URL을 어떻게 처리 할 수 있습니까?에서 제공됩니다.
-
==============================
3.또 다른 접근법은 두 개의 매개 변수 "orgId"와 "orgid"를 가지며 옵션을가집니다.
또 다른 접근법은 두 개의 매개 변수 "orgId"와 "orgid"를 가지며 옵션을가집니다.
public String welcome(@RequestParam(value="orgID", required = false) String org_ID, @RequestParam(value="orgid", required=false, String orgid, ModelMap model) { final String orgId = orgid == null ? org_ID : orgid; ... }
그러나 매개 변수에 대한 제어권이 있다면 나는 하나의 일관된 방식으로, org-id를 말하고 클라이언트와 서버 측에서 모두 따르는 것을 강력히 선호합니다.
-
==============================
4.Spring이 이것을 지원하는 것은 좋을지 모르지만 공급자와 소비자 간의 인터페이스 계약이 약화 될 수 있기 때문에 왜 그렇게하지 않았는지 이해할 수 있습니다. 한편, 대소 문자에 관계없이 매개 변수 이름을 사용하여 첫 번째 값을 가져 오는 방법은 매우 간단합니다.
Spring이 이것을 지원하는 것은 좋을지 모르지만 공급자와 소비자 간의 인터페이스 계약이 약화 될 수 있기 때문에 왜 그렇게하지 않았는지 이해할 수 있습니다. 한편, 대소 문자에 관계없이 매개 변수 이름을 사용하여 첫 번째 값을 가져 오는 방법은 매우 간단합니다.
String myVal = null; for (String pname : request.getParameterMap().keySet() ) { if ( pname != null && pname.toLowerCase().equals("your_lc_pname") ) { for (String v : request.getParameterValues(pname) ) { // do something with your value(s) } } }
-
==============================
5.봄 4.2 이상
봄 4.2 이상
@Configuration @EnableWebMvc @ComponentScan(basePackages="org.saat") public class WebConfig extends WebMvcConfigurerAdapter { @Override public void configurePathMatch(PathMatchConfigurer configurer) { AntPathMatcher matcher = new AntPathMatcher(); matcher.setCaseSensitive(false); configurer.setPathMatcher(matcher); } @Bean public ViewResolver viewResolver() { InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setPrefix("/"); viewResolver.setSuffix(".jsp"); return viewResolver; } }
-
==============================
6.내가 찾은 가장 간단한 방법은 단일 키 값 쌍을 매개 변수로 사용하여 키를 소문자로 변환하는 컨트롤러 메서드를 변경하는 것이 었습니다.
내가 찾은 가장 간단한 방법은 단일 키 값 쌍을 매개 변수로 사용하여 키를 소문자로 변환하는 컨트롤러 메서드를 변경하는 것이 었습니다.
public String welcome(@RequestParam(required = true) Map<String, String> params, ModelMap model) { String caseInsensitiveOrgId = params.keySet().toArray()[0].toString().toLowerCase(); String OrgValue = params.values().toArray()[0]; // Do whatever you want here }
from https://stackoverflow.com/questions/8922371/requestparam-value-in-spring-mvc-to-be-case-insensitive by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring에서 국제화를 위해 여러 파일과 메시지를 처리하는 방법은 무엇입니까? (0) | 2019.05.07 |
---|---|
[SPRING] Spring Java 구성을 위해 단일 MessageListenerContainer에 여러 JMS MessageListener를 추가하는 방법 (0) | 2019.05.07 |
[SPRING] Spring의 Controller에서 파일 반환 (0) | 2019.05.07 |
[SPRING] 봄 콩 범위. 싱글 톤과 프로토 타입 (0) | 2019.05.07 |
[SPRING] 최대 절전 모드 jpa를 사용하여 JSON을 직렬화 및 비 직렬화하여 JSON 응답으로 부모 개체를 자식 개체에 넣습니다. (0) | 2019.05.07 |