Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Ok, I have created a custom tab:</p> <p>Class:</p> <pre><code>package com.test; import java.util.Collections; import java.util.Enumeration; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager; import org.apache.taglibs.standard.tag.el.core.UrlTag; public class CustomUrlTag extends UrlTag { private static final long serialVersionUID = 1L; private String includeAllParams; private String excludeParams; public CustomUrlTag() { init(); } @Override public int doStartTag() throws JspException { return super.doStartTag(); } @Override public int doEndTag() throws JspException { if (isIncludeAllParam()) { final HttpServletRequest request = (HttpServletRequest) this.pageContext.getRequest(); // iterate over request parameters final List&lt;String&gt; requestParameterNames = Collections.list((Enumeration&lt;String&gt;) request.getParameterNames()); // exclude parameters if (null != excludeParams) { for (final String currentExcludeParam : excludeParams.split("[,]")) { requestParameterNames.remove(currentExcludeParam); } } for (final String parameterName : requestParameterNames) { // add parameters addParameter(parameterName, request.getParameter(parameterName)); } } return super.doEndTag(); } @Override public void release() { super.release(); init(); } private void init() { includeAllParams = null; } private boolean isIncludeAllParam() throws JspException { final Object r = ExpressionEvaluatorManager.evaluate("includeAllParams", includeAllParams, java.lang.Boolean.class, this, pageContext); if (r != null) { return ((Boolean) r).booleanValue(); } return false; } public void setIncludeAllParams(String includeAllParams) { this.includeAllParams = includeAllParams; } public void setExcludeParams(String excludeParams) { this.excludeParams = excludeParams; } } </code></pre> <p>tld:</p> <pre><code>&lt;tag&gt; &lt;description&gt; Creates a URL with optional query parameters. &lt;/description&gt; &lt;name&gt;customUrl&lt;/name&gt; &lt;tag-class&gt;com.test.CustomUrlTag&lt;/tag-class&gt; &lt;body-content&gt;JSP&lt;/body-content&gt; &lt;attribute&gt; &lt;description&gt; Name of the exported scoped variable for the processed url. The type of the scoped variable is String. &lt;/description&gt; &lt;name&gt;var&lt;/name&gt; &lt;required&gt;false&lt;/required&gt; &lt;rtexprvalue&gt;false&lt;/rtexprvalue&gt; &lt;/attribute&gt; &lt;attribute&gt; &lt;description&gt;URL to be processed.&lt;/description&gt; &lt;name&gt;value&lt;/name&gt; &lt;required&gt;true&lt;/required&gt; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt; &lt;/attribute&gt; &lt;attribute&gt; &lt;description&gt;&lt;/description&gt; &lt;name&gt;includeAllParams&lt;/name&gt; &lt;required&gt;true&lt;/required&gt; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt; &lt;/attribute&gt; &lt;attribute&gt; &lt;description&gt;&lt;/description&gt; &lt;name&gt;excludeParams&lt;/name&gt; &lt;required&gt;false&lt;/required&gt; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt; &lt;/attribute&gt; &lt;/tag&gt; </code></pre> <p>And in the jsp:</p> <pre><code>&lt;%@ taglib prefix="thePrefix" uri="http://www.test.com/project/tags" %&gt; &lt;thePrefix:customUrl var="backUrl" value="list.html" includeAllParams="true" excludeParams="id"/&gt; </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload