/** * Copyright 2005-2016 hdiv.org * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.hdiv.taglib.html; import java.net.MalformedURLException; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import org.apache.struts.taglib.TagUtils; import org.hdiv.urlProcessor.LinkUrlProcessor; import org.hdiv.util.HDIVUtil; /** * Generate a URL-encoded URI as a string. * * @author Gorka Vicente * @since HDIV 2.0.4 */ public class RewriteTagHDIV extends LinkTagHDIV { protected LinkUrlProcessor linkUrlProcessor; /** * Render the URI. * * @throws JspException if a JSP exception has occurred */ @Override public int doEndTag() throws JspException { // Generate the hyperlink URL Map params = TagUtils.getInstance().computeParameters(pageContext, paramId, paramName, paramProperty, paramScope, name, property, scope, transaction); // Add parameters collected from the tag's inner body if (!parameters.isEmpty()) { if (params == null) { params = new HashMap(); } params.putAll(parameters); } String url = null; try { // Note that we're encoding the & character to & in XHTML mode only, // otherwise the & is written as is to work in javascripts. url = TagUtils.getInstance().computeURLWithCharEncoding(pageContext, forward, href, page, action, module, params, anchor, false, isXhtml(), useLocalEncoding); } catch (MalformedURLException e) { TagUtils.getInstance().saveException(pageContext, e); throw new JspException(messages.getMessage("rewrite.url", e.toString())); } HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); String charEncoding = useLocalEncoding ? charEncoding = pageContext.getResponse().getCharacterEncoding() : "UTF-8"; // Call to Hdiv LinkUrlProcessor if (linkUrlProcessor == null) { linkUrlProcessor = HDIVUtil.getLinkUrlProcessor(request.getSession().getServletContext()); } url = linkUrlProcessor.processUrl(request, url, charEncoding); TagUtils.getInstance().write(pageContext, url); return (EVAL_PAGE); } }