HandlerMethodArgumentResolver 적용 질의 입니다
- 작성자 :
- 채*용
- 작성일 :
- 2020-10-13 18:28:29
- 조회수 :
- 2,872
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
1. WEB-INF/config/springmvc/dispatcher-servlet.xml 설정정보 ---
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="webBindingInitializer">
<bean class="comm.rte.cmmn.web.EgovBindingInitializer" />
</property>
<property name="customArgumentResolvers">
<list>
<bean class="comm.rte.cmmn.ria.support.CustomRiaArgumentResolver">
<property name="uiAdaptor">
<ref bean="xpMapAdaptor" />
</property>
</bean>
<bean class="comm.rte.cmmn.ria.support.CustomRiaArgumentResolver">
<property name="uiAdaptor">
<ref bean="xpVOAdaptor" />
</property>
</bean>
</list>
</property>
</bean>
<bean name="xpMapAdaptor" class="comm.rte.cmmn.ria.xplatform.map.XPlatformAdaptorImp" />
<bean name="xpVOAdaptor" class="comm.rte.cmmn.ria.xplatform.vo.XPlatformAdaptorVOImp" />
2. comm.rte.cmmn.ria.support.CustomRiaArgumentResolver.java 소스 내역 --
@Component
public class CustomRiaArgumentResolver implements HandlerMethodArgumentResolver {
private IUiAdaptor uiA;
public void setUiAdaptor(IUiAdaptor uiA) {
this.uiA = uiA; }
@Override
public boolean supportsParameter(MethodParameter parameter) {
if(IUiAdaptor.class.isAssignableFrom(parameter.getParameterType())) {
System.out.println("getParameterType = true" );
return true; }
else {
System.out.println("getParameterType = false" );
return false; } } <--- 항상 false 인 이유?
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
Class<?> type = parameter.getParameterType();
Object uiObject = null;
if (uiA == null)
return null;
if (type.equals(uiA.getModelName())) {
HttpServletRequest request = (HttpServletRequest) webRequest.getNativeRequest();
uiObject = uiA.convert(request);
return uiObject;} return null; }
3. comm/rte/cmmn/ria/support/IUiAdaptor.java 소스 내역 ----
@Component
public interface IUiAdaptor {
public Object convert(HttpServletRequest request) throws Exception;
public Class<?> getModelName(); }
4. 결론 질문은 supportsParameter가 false 인 이유를 알려 주세요
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="webBindingInitializer">
<bean class="comm.rte.cmmn.web.EgovBindingInitializer" />
</property>
<property name="customArgumentResolvers">
<list>
<bean class="comm.rte.cmmn.ria.support.CustomRiaArgumentResolver">
<property name="uiAdaptor">
<ref bean="xpMapAdaptor" />
</property>
</bean>
<bean class="comm.rte.cmmn.ria.support.CustomRiaArgumentResolver">
<property name="uiAdaptor">
<ref bean="xpVOAdaptor" />
</property>
</bean>
</list>
</property>
</bean>
<bean name="xpMapAdaptor" class="comm.rte.cmmn.ria.xplatform.map.XPlatformAdaptorImp" />
<bean name="xpVOAdaptor" class="comm.rte.cmmn.ria.xplatform.vo.XPlatformAdaptorVOImp" />
2. comm.rte.cmmn.ria.support.CustomRiaArgumentResolver.java 소스 내역 --
@Component
public class CustomRiaArgumentResolver implements HandlerMethodArgumentResolver {
private IUiAdaptor uiA;
public void setUiAdaptor(IUiAdaptor uiA) {
this.uiA = uiA; }
@Override
public boolean supportsParameter(MethodParameter parameter) {
if(IUiAdaptor.class.isAssignableFrom(parameter.getParameterType())) {
System.out.println("getParameterType = true" );
return true; }
else {
System.out.println("getParameterType = false" );
return false; } } <--- 항상 false 인 이유?
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
Class<?> type = parameter.getParameterType();
Object uiObject = null;
if (uiA == null)
return null;
if (type.equals(uiA.getModelName())) {
HttpServletRequest request = (HttpServletRequest) webRequest.getNativeRequest();
uiObject = uiA.convert(request);
return uiObject;} return null; }
3. comm/rte/cmmn/ria/support/IUiAdaptor.java 소스 내역 ----
@Component
public interface IUiAdaptor {
public Object convert(HttpServletRequest request) throws Exception;
public Class<?> getModelName(); }
4. 결론 질문은 supportsParameter가 false 인 이유를 알려 주세요
A
안녕하세요.
표준프레임워크센터입니다.
우선 센터에서는 사이트별 커스텀된 환경에 관해서는 알 수 없기때문에 안내에 제한이 있을 수 있습니다.
현재 상황을 봤을땐 넘어온 MethodParameter가 IUiAdaptor 의 규약을 만족하는지 확인해 보셔야 할 것 같습니다.
자세한 내용은 사용중이신 해당 UI 솔루션에서 기술 지원을 받으시는 것이 좋을 듯합니다.
http://support.tobesoft.co.kr/Support/index.html
감사합니다.
표준프레임워크센터입니다.
우선 센터에서는 사이트별 커스텀된 환경에 관해서는 알 수 없기때문에 안내에 제한이 있을 수 있습니다.
현재 상황을 봤을땐 넘어온 MethodParameter가 IUiAdaptor 의 규약을 만족하는지 확인해 보셔야 할 것 같습니다.
자세한 내용은 사용중이신 해당 UI 솔루션에서 기술 지원을 받으시는 것이 좋을 듯합니다.
http://support.tobesoft.co.kr/Support/index.html
감사합니다.