📄 wicketportlet.java
字号:
defaultPages.put(PARAM_HELP_PAGE, viewPage); } else { defaultPage = fixWicketUrl(defaultPage, wicketFilterPath, wicketFilterQuery); defaultPages.put(PARAM_HELP_PAGE, defaultPage.startsWith(wicketFilterPath) ? defaultPage : viewPage); } defaultPage = (String)defaultPages.get(PARAM_EDIT_PAGE); if (defaultPage == null) { defaultPages.put(PARAM_EDIT_PAGE, viewPage); } else { defaultPage = fixWicketUrl(defaultPage, wicketFilterPath, wicketFilterQuery); defaultPages.put(PARAM_EDIT_PAGE, defaultPage.startsWith(wicketFilterPath) ? defaultPage : viewPage); } } protected Properties getWicketPortletProperties(Properties properties) throws PortletException { if (properties == null) { properties = new Properties(); } InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream( WICKET_PORTLET_PROPERTIES); if (is != null) { try { properties.load(is); } catch (IOException e) { throw new PortletException( "Failed to load WicketPortlet.properties from classpath", e); } } return properties; } protected String getContextProviderClassNameParameter(PortletConfig config) { return config.getInitParameter(PARAM_SERVLET_CONTEXT_PROVIDER); } protected String getPortletResourceURLFactoryClassNameParameter(PortletConfig config) { return config.getInitParameter(PARAM_PORTLET_RESOURCE_URL_FACTORY); } protected ServletContextProvider getServletContextProvider() { return servletContextProvider; } protected ServletContext getServletContext(GenericPortlet portlet, PortletRequest request, PortletResponse response) { return getServletContextProvider().getServletContext(portlet); } protected HttpServletRequest getHttpServletRequest(GenericPortlet portlet, PortletRequest request, PortletResponse response) { return getServletContextProvider().getHttpServletRequest(portlet, request); } protected HttpServletResponse getHttpServletResponse(GenericPortlet portlet, PortletRequest request, PortletResponse response) { return getServletContextProvider().getHttpServletResponse(portlet, response); } protected String getWicketConfigParameter(PortletRequest request, String paramName, String defaultValue) { return defaultValue; } protected String getWicketUrlPortletParameter(PortletRequest request) { return WICKET_URL_PORTLET_PARAMETER; } protected String getWicketFilterPath() { return wicketFilterPath; } protected String getWicketURL(PortletRequest request, String pageType, String defaultPage) { String wicketURL = null; if (request instanceof ActionRequest) { wicketURL = request.getParameter((String)request .getAttribute(WicketPortlet.WICKET_URL_PORTLET_PARAMETER_ATTR)); } else { wicketURL = request.getParameter((String)request .getAttribute(WicketPortlet.WICKET_URL_PORTLET_PARAMETER_ATTR) + request.getPortletMode().toString()); } if (wicketURL == null) { wicketURL = getWicketConfigParameter(request, CONFIG_PARAM_PREFIX + pageType, defaultPage); } return wicketURL; } protected void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException { processRequest(request, response, VIEW_REQUEST, PARAM_VIEW_PAGE); } protected void doEdit(RenderRequest request, RenderResponse response) throws PortletException, IOException { processRequest(request, response, EDIT_REQUEST, PARAM_EDIT_PAGE); } protected void doHelp(RenderRequest request, RenderResponse response) throws PortletException, IOException { processRequest(request, response, HELP_REQUEST, PARAM_HELP_PAGE); } protected void doCustom(RenderRequest request, RenderResponse response) throws PortletException, IOException { processRequest(request, response, CUSTOM_REQUEST, PARAM_CUSTOM_PAGE); } public void processAction(ActionRequest request, ActionResponse response) throws PortletException, IOException { processRequest(request, response, ACTION_REQUEST, PARAM_ACTION_PAGE); } protected void processRequest(PortletRequest request, PortletResponse response, String requestType, String pageType) throws PortletException, IOException { String wicketURL = null; String wicketFilterPath = null; String wicketFilterQuery = null; request.setAttribute(WICKET_URL_PORTLET_PARAMETER_ATTR, getWicketUrlPortletParameter(request)); wicketURL = getWicketURL(request, pageType, getDefaultPage(pageType)); wicketFilterPath = getWicketConfigParameter(request, WICKET_FILTER_PATH, this.wicketFilterPath); wicketFilterQuery = getWicketConfigParameter(request, WICKET_FILTER_QUERY, this.wicketFilterQuery); boolean actionRequest = ACTION_REQUEST.equals(requestType); WicketResponseState responseState = new WicketResponseState(); request.setAttribute(RESPONSE_STATE_ATTR, responseState); request.setAttribute(RESOURCE_URL_FACTORY_ATTR, resourceURLFactory); request.setAttribute(REQUEST_TYPE_ATTR, requestType); String portletResourceURL = request.getParameter(PORTLET_RESOURCE_URL_PARAMETER); if (portletResourceURL != null) { request.setAttribute(PORTLET_RESOURCE_URL_ATTR, portletResourceURL); } if (actionRequest) { ServletContext servletContext = getServletContext(this, request, response); HttpServletRequest req = getHttpServletRequest(this, request, response); HttpServletResponse res = getHttpServletResponse(this, request, response); RequestDispatcher rd = servletContext.getRequestDispatcher(wicketURL); if (rd != null) { // http://issues.apache.org/jira/browse/PB-2: // provide servlet access to the Portlet components even from // an actionRequest in extension to the JSR-168 requirement // PLT.16.3.2 which (currently) only covers renderRequest // servlet inclusion. if (req.getAttribute("javax.portlet.config") == null) { req.setAttribute("javax.portlet.config", getPortletConfig()); } if (req.getAttribute("javax.portlet.request") == null) { req.setAttribute("javax.portlet.request", request); } if (req.getAttribute("javax.portlet.response") == null) { req.setAttribute("javax.portlet.response", response); } try { rd.include(req, res); processActionResponseState(wicketURL, wicketFilterPath, wicketFilterQuery, (ActionRequest)request, (ActionResponse)response, responseState); } catch (ServletException e) { throw new PortletException(e); } } } else { PortletRequestDispatcher rd = null; String previousURL = null; while (true) { rd = getPortletContext().getRequestDispatcher(wicketURL); if (rd != null) { rd.include((RenderRequest)request, (RenderResponse)response); String redirectLocation = responseState.getRedirectLocation(); if (redirectLocation != null) { redirectLocation = fixWicketUrl(redirectLocation, wicketFilterPath, wicketFilterQuery); boolean validWicketUrl = redirectLocation.startsWith(wicketFilterPath); if (portletResourceURL != null) { if (validWicketUrl) { HashMap parameters = new HashMap(2); parameters .put( (String)request .getAttribute(WicketPortlet.WICKET_URL_PORTLET_PARAMETER_ATTR) + request.getPortletMode().toString(), new String[] { redirectLocation }); parameters.put(PORTLET_RESOURCE_URL_PARAMETER, new String[] { "true" }); redirectLocation = resourceURLFactory.createResourceURL( getPortletConfig(), (RenderRequest)request, (RenderResponse)response, parameters); } getHttpServletResponse(this, request, response).sendRedirect( redirectLocation); } else if (validWicketUrl && ((previousURL == null || previousURL != redirectLocation))) { previousURL = wicketURL; wicketURL = redirectLocation; ((RenderResponse)response).reset(); responseState.reset(); continue; } else { // TODO: unhandled/unsupport RenderResponse redirect } } } break; } } } protected void processActionResponseState(String wicketURL, String wicketFilterPath, String wicketFilterQuery, ActionRequest request, ActionResponse response, WicketResponseState responseState) throws PortletException, IOException { if (responseState.getRedirectLocation() != null) { wicketURL = fixWicketUrl(responseState.getRedirectLocation(), wicketFilterPath, wicketFilterQuery); if (wicketURL.startsWith(wicketFilterPath)) { response.setRenderParameter((String)request .getAttribute(WicketPortlet.WICKET_URL_PORTLET_PARAMETER_ATTR) + request.getPortletMode().toString(), wicketURL); } else { response.sendRedirect(responseState.getRedirectLocation()); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -