/** * Appends the <code>version</code> parameter to the URI if needed.<p> * * @param uri the resource URI * @param req the current request * * @return the same URI, with additional parameters in case of a historical request */ public static String getHistoryResourceURI(String uri, ServletRequest req) { String histUri = uri; if (CmsHistoryResourceHandler.isHistoryRequest(req)) { String version = req.getParameter(CmsHistoryResourceHandler.PARAM_VERSION); histUri = CmsRequestUtil.appendParameter(uri, CmsHistoryResourceHandler.PARAM_VERSION, version); } return histUri; }
/** * Returns the map of parameters of this link.<p> * * @return the map of parameters */ public Map<String, String[]> getParameterMap() { if (m_parameters == null) { m_parameters = CmsRequestUtil.createParameterMap(m_query); } return m_parameters; }
/** * Processes a request caused by a form submit.<p> * * @param request the request to process */ void processFormSubmitRequest(HttpServletRequest request) { String formDataId = getFormDataId(request); List<FileItem> items = CmsRequestUtil.readMultipartFileItems(request); m_storedFormData.put(formDataId, items); }
/** * Forwards the response to the given target, which may contain parameters appended like for example <code>?a=b&c=d</code>.<p> * * Please note: If possible, use <code>{@link #forwardRequest(String, Map, HttpServletRequest, HttpServletResponse)}</code> * where the parameters are passed as a map, since the parsing of the parameters may introduce issues with encoding * and is in general much less effective.<p> * * The parsing of parameters will likely fail for "large values" (e.g. full blown web forms with <textarea> * elements etc. Use this method only if you know that the target will just contain up to 3 parameters which * are relatively short and have no encoding or line break issues.<p> * * @param target the target to forward to (may contain parameters like <code>?a=b&c=d</code>) * @param req the request to forward * @param res the response to forward * * @throws IOException in case the forwarding fails * @throws ServletException in case the forwarding fails */ public static void forwardRequest(String target, HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { // clear the current parameters CmsUriSplitter uri = new CmsUriSplitter(target); Map<String, String[]> params = createParameterMap(uri.getQuery()); forwardRequest(uri.getPrefix(), params, req, res); }
/** * Sets a parameter for the image with the provided key as name and the value.<p> * * @param cms the current users context * @param key the parameter name to set * @param value the value of the parameter */ private void setParameterValue(CmsObject cms, String key, String value) { if (m_parameters == null) { m_parameters = getParameterMap(getStringValue(cms)); } if (CmsStringUtil.isEmptyOrWhitespaceOnly(value) && m_parameters.containsKey(key)) { m_parameters.remove(key); } else if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(value)) { m_parameters.put(key, new String[] {value}); } String result = CmsRequestUtil.getRequestLink(getStringValue(cms)); result = CmsRequestUtil.appendParameters(result, m_parameters, false); setStringValue(cms, result); }
m_multiPartFileItems = CmsRequestUtil.readMultipartFileItems(request); if (m_multiPartFileItems != null) { m_parameterMap = CmsRequestUtil.readParameterMapFromMultiPart( getCms().getRequestContext().getEncoding(), m_multiPartFileItems);
/** * Public constructor for login page.<p> * * @param context the JSP page context object * @param req the JSP request * @param res the JSP response */ public CmsLogin(PageContext context, HttpServletRequest req, HttpServletResponse res) { super(context, req, res); // this page must never be cached res.setDateHeader(CmsRequestUtil.HEADER_LAST_MODIFIED, System.currentTimeMillis()); CmsRequestUtil.setNoCacheHeaders(res); m_locale = getLocaleForRequest(req); }
parameters = CmsRequestUtil.readParameterMapFromMultiPart( getCms().getRequestContext().getEncoding(), getMultiPartFileItems());
/** * Reads value from the request parameters, * will return <code>null</code> if the value is not available or only white space.<p> * * The value of the request will also be decoded using <code>{@link CmsEncoder#decode(String)}</code> * and also trimmed using <code>{@link String#trim()}</code>.<p> * * @param request the request to read the parameter from * @param paramName the parameter name to read * * @return the request parameter value for the given parameter */ public static String getNotEmptyDecodedParameter(HttpServletRequest request, String paramName) { String result = getNotEmptyParameter(request, paramName); if (result != null) { result = CmsEncoder.decode(result.trim()); } return result; }
/** * @see org.opencms.workplace.list.A_CmsListDialog#executeListSingleActions() */ @Override public void executeListSingleActions() throws IOException, ServletException { if (getParamListAction().equals(LIST_ACTION_TRANSFER) || getParamListAction().equals(LIST_DEFACTION_TRANSFER)) { // execute the delete action try { Iterator it = CmsStringUtil.splitAsList(getParamUserid(), CmsHtmlList.ITEM_SEPARATOR, true).iterator(); while (it.hasNext()) { CmsUUID id = new CmsUUID((String)it.next()); getCms().deleteUser(id, new CmsUUID(getSelectedItem().getId())); } CmsRequestUtil.forwardRequest(getParamCloseLink(), getJsp().getRequest(), getJsp().getResponse()); setForwarded(true); } catch (CmsException e) { throw new CmsRuntimeException( Messages.get().container(Messages.ERR_TRANSFER_USER_1, getSelectedItem().get(LIST_COLUMN_NAME)), e); } } else { throwListUnsupportedActionException(); } listSave(); }
/** * Internal helper that is used by * <code>{@link #load(CmsObject, CmsResource, HttpServletRequest, HttpServletResponse)}</code> * and * <code>{@link #export(CmsObject, CmsResource, HttpServletRequest, HttpServletResponse)}</code> * to handle conditional request parameter support for links to pointer * resources. * <p> * * @param pointerLink * the link to append request parameters to * * @param req * the original request to the pointer * * @return the pointer with the parameters */ private static String appendLinkParams(String pointerLink, HttpServletRequest req) { String result = pointerLink; if (isRequestParamSupportEnabled()) { Map<String, String[]> params = req.getParameterMap(); if (params.size() > 0) { result = CmsRequestUtil.appendParameters(result, params, false); } } return result; }
/** * @see org.opencms.workplace.CmsWorkplace#initWorkplaceRequestValues(org.opencms.workplace.CmsWorkplaceSettings, javax.servlet.http.HttpServletRequest) */ @Override protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest request) { // check if a startup page has been set String frame = CmsRequestUtil.getNotEmptyDecodedParameter(request, CmsFrameset.PARAM_WP_FRAME); if ((frame == null) || (FRAMES_LIST.indexOf(frame) < 0)) { // illegal or no frame selected, assume the "top" frame frame = FRAMES[0]; } if (FRAMES[0].equals(frame)) { // top frame requested - execute special reload actions topFrameReload(settings); } // check if a startup page has been set String startup = CmsRequestUtil.getNotEmptyDecodedParameter(request, CmsFrameset.PARAM_WP_START); if (startup != null) { m_reloadRequired = true; settings.setViewStartup(startup); } // check if the user requested a view change String view = request.getParameter(CmsFrameset.PARAM_WP_VIEW); if (view != null) { m_reloadRequired = true; settings.setViewUri(view); settings.getFrameUris().put("body", view); } m_reloadRequired = initSettings(settings, request) || m_reloadRequired; }
m_multiPartFileItems = CmsRequestUtil.readMultipartFileItems(request); if (m_multiPartFileItems != null) { m_parameterMap = CmsRequestUtil.readParameterMapFromMultiPart( getCms().getRequestContext().getEncoding(), m_multiPartFileItems);
/** * Forwards the response to the given target, which may contain parameters appended like for example <code>?a=b&c=d</code>.<p> * * Please note: If possible, use <code>{@link #forwardRequest(String, Map, HttpServletRequest, HttpServletResponse)}</code> * where the parameters are passed as a map, since the parsing of the parameters may introduce issues with encoding * and is in general much less effective.<p> * * The parsing of parameters will likely fail for "large values" (e.g. full blown web forms with <textarea> * elements etc. Use this method only if you know that the target will just contain up to 3 parameters which * are relatively short and have no encoding or line break issues.<p> * * @param target the target to forward to (may contain parameters like <code>?a=b&c=d</code>) * @param req the request to forward * @param res the response to forward * * @throws IOException in case the forwarding fails * @throws ServletException in case the forwarding fails */ public static void forwardRequest(String target, HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { // clear the current parameters CmsUriSplitter uri = new CmsUriSplitter(target); Map params = createParameterMap(uri.getQuery()); forwardRequest(uri.getPrefix(), params, req, res); }
/** * @see javax.servlet.jsp.tagext.Tag#doStartTag() */ @Override public int doStartTag() { ServletResponse res = pageContext.getResponse(); if (res instanceof HttpServletResponse) { CmsRequestUtil.setNoCacheHeaders((HttpServletResponse)pageContext.getResponse()); } return SKIP_BODY; } }
parameters = CmsRequestUtil.readParameterMapFromMultiPart( getCms().getRequestContext().getEncoding(), getMultiPartFileItems());
/** * Reads value from the request parameters, * will return <code>null</code> if the value is not available or only white space.<p> * * The value of the request will also be decoded using <code>{@link CmsEncoder#decode(String)}</code> * and also trimmed using <code>{@link String#trim()}</code>.<p> * * @param request the request to read the parameter from * @param paramName the parameter name to read * * @return the request parameter value for the given parameter */ public static String getNotEmptyDecodedParameter(HttpServletRequest request, String paramName) { String result = getNotEmptyParameter(request, paramName); if (result != null) { result = CmsEncoder.decode(result.trim()); } return result; }
CmsRequestUtil.forwardRequest( getParamCloseLink(), getJsp().getRequest(),
/** * Returns the OpenCms link for the given tool path which requires parameters.<p> * * Please note: Don't overuse the parameter map because this will likely introduce issues * with encoding. If possible, don't pass parameters at all, or only very simple parameters * with no special chars that can easily be parsed.<p> * * @param jsp the jsp action element * @param toolPath the tool path * @param params the map of required tool parameters * * @return the OpenCms link for the given tool path which requires parameters */ public static String linkForToolPath(CmsJspActionElement jsp, String toolPath, Map params) { if (params == null) { // no parameters - take the shortcut return linkForToolPath(jsp, toolPath); } params.put(CmsToolDialog.PARAM_PATH, toolPath); return CmsRequestUtil.appendParameters(jsp.link(VIEW_JSPPAGE_LOCATION), params, true); }
/** * @see org.opencms.workplace.CmsWorkplace#initWorkplaceRequestValues(org.opencms.workplace.CmsWorkplaceSettings, javax.servlet.http.HttpServletRequest) */ @Override protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest request) { // check if a startup page has been set String frame = CmsRequestUtil.getNotEmptyDecodedParameter(request, CmsFrameset.PARAM_WP_FRAME); if ((frame == null) || (FRAMES_LIST.indexOf(frame) < 0)) { // illegal or no frame selected, assume the "top" frame frame = FRAMES[0]; } if (FRAMES[0].equals(frame)) { // top frame requested - execute special reload actions topFrameReload(settings); } // check if a startup page has been set String startup = CmsRequestUtil.getNotEmptyDecodedParameter(request, CmsFrameset.PARAM_WP_START); if (startup != null) { m_reloadRequired = true; settings.setViewStartup(startup); } // check if the user requested a view change String view = request.getParameter(CmsFrameset.PARAM_WP_VIEW); if (view != null) { m_reloadRequired = true; settings.setViewUri(view); settings.getFrameUris().put("body", view); } m_reloadRequired = initSettings(settings, request) || m_reloadRequired; }