@Override
protected Object resolveStandardArgument(Class<?> parameterType, NativeWebRequest webRequest)
throws Exception {
PortletRequest request = webRequest.getNativeRequest(PortletRequest.class);
PortletResponse response = webRequest.getNativeResponse(PortletResponse.class);
if (PortletRequest.class.isAssignableFrom(parameterType) ||
MultipartRequest.class.isAssignableFrom(parameterType)) {
Object nativeRequest = webRequest.getNativeRequest(parameterType);
if (nativeRequest == null) {
throw new IllegalStateException(
"Current request is not of type [" + parameterType.getName() + "]: " + request);
}
return nativeRequest;
}
else if (PortletResponse.class.isAssignableFrom(parameterType)) {
Object nativeResponse = webRequest.getNativeResponse(parameterType);
if (nativeResponse == null) {
throw new IllegalStateException(
"Current response is not of type [" + parameterType.getName() + "]: " + response);
}
return nativeResponse;
}
else if (PortletSession.class.isAssignableFrom(parameterType)) {
return request.getPortletSession();
}
else if (PortletPreferences.class.isAssignableFrom(parameterType)) {
return request.getPreferences();
}
else if (PortletMode.class.isAssignableFrom(parameterType)) {
return request.getPortletMode();
}
else if (WindowState.class.isAssignableFrom(parameterType)) {
return request.getWindowState();
}
else if (PortalContext.class.isAssignableFrom(parameterType)) {
return request.getPortalContext();
}
else if (Principal.class.isAssignableFrom(parameterType)) {
return request.getUserPrincipal();
}
else if (Locale.class == parameterType) {
return request.getLocale();
}
else if (InputStream.class.isAssignableFrom(parameterType)) {
if (!(request instanceof ClientDataRequest)) {
throw new IllegalStateException("InputStream can only get obtained for Action/ResourceRequest");
}
return ((ClientDataRequest) request).getPortletInputStream();
}
else if (Reader.class.isAssignableFrom(parameterType)) {
if (!(request instanceof ClientDataRequest)) {
throw new IllegalStateException("Reader can only get obtained for Action/ResourceRequest");
}
return ((ClientDataRequest) request).getReader();
}
else if (OutputStream.class.isAssignableFrom(parameterType)) {
if (!(response instanceof MimeResponse)) {
throw new IllegalStateException("OutputStream can only get obtained for Render/ResourceResponse");
}
return ((MimeResponse) response).getPortletOutputStream();
}
else if (Writer.class.isAssignableFrom(parameterType)) {
if (!(response instanceof MimeResponse)) {
throw new IllegalStateException("Writer can only get obtained for Render/ResourceResponse");
}
return ((MimeResponse) response).getWriter();
}
else if (Event.class == parameterType) {
if (!(request instanceof EventRequest)) {
throw new IllegalStateException("Event can only get obtained from EventRequest");
}
return ((EventRequest) request).getEvent();
}
return super.resolveStandardArgument(parameterType, webRequest);
}
AnnotationMethodHandlerAdapter.java 文件源码
java
阅读 25
收藏 0
点赞 0
评论 0
项目:spring4-understanding
作者:
评论列表
文章目录