📄 complexportletapplicationcontext.java
字号:
if (!Locale.CANADA.equals(request.getLocale())) {
throw new PortletException("Incorrect Locale in RenderRequest");
}
response.getWriter().write("locale-ok");
return null;
}
}
public static class LocaleContextCheckingController implements Controller {
public void handleActionRequest(ActionRequest request, ActionResponse response) throws PortletException {
if (!Locale.CANADA.equals(LocaleContextHolder.getLocale())) {
throw new PortletException("Incorrect Locale in LocaleContextHolder");
}
}
public ModelAndView handleRenderRequest(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
if (!Locale.CANADA.equals(LocaleContextHolder.getLocale())) {
throw new PortletException("Incorrect Locale in LocaleContextHolder");
}
response.getWriter().write("locale-ok");
return null;
}
}
public static class MyPortlet implements Portlet {
private PortletConfig portletConfig;
public void init(PortletConfig portletConfig) throws PortletException {
this.portletConfig = portletConfig;
}
public void processAction(ActionRequest request, ActionResponse response) throws PortletException {
response.setRenderParameter("result", "myPortlet action called");
}
public void render(RenderRequest request, RenderResponse response) throws PortletException, IOException {
response.getWriter().write("myPortlet was here");
}
public PortletConfig getPortletConfig() {
return this.portletConfig;
}
public void destroy() {
this.portletConfig = null;
}
}
public static interface MyHandler {
public void doSomething(PortletRequest request) throws Exception;
}
public static class ExceptionThrowingHandler implements MyHandler {
public void doSomething(PortletRequest request) throws Exception {
if (request.getParameter("fail") != null) {
throw new ModelAndViewDefiningException(new ModelAndView("failed-modelandview"));
}
if (request.getParameter("access") != null) {
throw new IllegalAccessException("portlet-illegalaccess");
}
if (request.getParameter("binding") != null) {
throw new PortletRequestBindingException("portlet-binding");
}
if (request.getParameter("generic") != null) {
throw new Exception("portlet-generic");
}
if (request.getParameter("runtime") != null) {
throw new RuntimeException("portlet-runtime");
}
throw new IllegalArgumentException("illegal argument");
}
}
public static class MyHandlerAdapter implements HandlerAdapter, Ordered {
public int getOrder() {
return 99;
}
public boolean supports(Object handler) {
return handler != null && MyHandler.class.isAssignableFrom(handler.getClass());
}
public void handleAction(ActionRequest request, ActionResponse response, Object delegate) throws Exception {
((MyHandler) delegate).doSomething(request);
}
public ModelAndView handleRender(RenderRequest request, RenderResponse response, Object delegate) throws Exception {
((MyHandler) delegate).doSomething(request);
return null;
}
}
public static class MyHandlerInterceptor1 implements HandlerInterceptor {
public boolean preHandleAction(ActionRequest request, ActionResponse response, Object handler) {
return true;
}
public void afterActionCompletion(ActionRequest request, ActionResponse response, Object handler, Exception ex) {
}
public boolean preHandleRender(RenderRequest request, RenderResponse response, Object handler)
throws PortletException {
if (request.getAttribute("test2-remove-never") != null) {
throw new PortletException("Wrong interceptor order");
}
request.setAttribute("test1-remove-never", "test1-remove-never");
request.setAttribute("test1-remove-post", "test1-remove-post");
request.setAttribute("test1-remove-after", "test1-remove-after");
return true;
}
public void postHandleRender(
RenderRequest request, RenderResponse response, Object handler, ModelAndView modelAndView)
throws PortletException {
if (request.getAttribute("test2-remove-post") != null) {
throw new PortletException("Wrong interceptor order");
}
if (!"test1-remove-post".equals(request.getAttribute("test1-remove-post"))) {
throw new PortletException("Incorrect request attribute");
}
request.removeAttribute("test1-remove-post");
}
public void afterRenderCompletion(
RenderRequest request, RenderResponse response, Object handler, Exception ex)
throws PortletException {
if (request.getAttribute("test2-remove-after") != null) {
throw new PortletException("Wrong interceptor order");
}
request.removeAttribute("test1-remove-after");
}
}
public static class MyHandlerInterceptor2 implements HandlerInterceptor {
public boolean preHandleAction(ActionRequest request, ActionResponse response, Object handler) {
return true;
}
public void afterActionCompletion(ActionRequest request, ActionResponse response, Object handler, Exception ex) {
}
public boolean preHandleRender(RenderRequest request, RenderResponse response, Object handler)
throws PortletException {
if (request.getAttribute("test1-remove-post") == null) {
throw new PortletException("Wrong interceptor order");
}
if ("true".equals(request.getParameter("abort"))) {
return false;
}
request.setAttribute("test2-remove-never", "test2-remove-never");
request.setAttribute("test2-remove-post", "test2-remove-post");
request.setAttribute("test2-remove-after", "test2-remove-after");
return true;
}
public void postHandleRender(
RenderRequest request, RenderResponse response, Object handler, ModelAndView modelAndView)
throws PortletException {
if ("true".equals(request.getParameter("noView"))) {
modelAndView.clear();
}
if (request.getAttribute("test1-remove-post") == null) {
throw new PortletException("Wrong interceptor order");
}
if (!"test2-remove-post".equals(request.getAttribute("test2-remove-post"))) {
throw new PortletException("Incorrect request attribute");
}
request.removeAttribute("test2-remove-post");
}
public void afterRenderCompletion(
RenderRequest request, RenderResponse response, Object handler, Exception ex)
throws Exception {
if (request.getAttribute("test1-remove-after") == null) {
throw new PortletException("Wrong interceptor order");
}
request.removeAttribute("test2-remove-after");
}
}
public static class MultipartCheckingHandler implements MyHandler {
public void doSomething(PortletRequest request) throws PortletException, IllegalAccessException {
if (!(request instanceof MultipartActionRequest)) {
throw new PortletException("Not in a MultipartActionRequest");
}
}
}
public static class MockMultipartResolver implements PortletMultipartResolver {
public boolean isMultipart(ActionRequest request) {
return true;
}
public MultipartActionRequest resolveMultipart(ActionRequest request) throws MultipartException {
if (request.getAttribute("fail") != null) {
throw new MaxUploadSizeExceededException(1000);
}
if (request instanceof MultipartActionRequest) {
throw new IllegalStateException("Already a multipart request");
}
if (request.getAttribute("resolved") != null) {
throw new IllegalStateException("Already resolved");
}
request.setAttribute("resolved", Boolean.TRUE);
Map files = new HashMap();
files.put("someFile", "someFile");
Map params = new HashMap();
params.put("someParam", "someParam");
return new DefaultMultipartActionRequest(request, files, params);
}
public void cleanupMultipart(MultipartActionRequest request) {
if (request.getAttribute("cleanedUp") != null) {
throw new IllegalStateException("Already cleaned up");
}
request.setAttribute("cleanedUp", Boolean.TRUE);
}
}
public static class TestApplicationListener implements ApplicationListener {
public int counter = 0;
public void onApplicationEvent(ApplicationEvent event) {
if (event instanceof PortletRequestHandledEvent) {
this.counter++;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -