Update of /cvsroot/struts-menu/navigator/src/java/net/sf/navigator/taglib In directory sc8-pr-cvs1:/tmp/cvs-serv18499/src/java/net/sf/navigator/taglib
Modified Files: DisplayMenuTag.java Added Files: ExpressionEvaluator.java Log Message: added JSTL support --- NEW FILE: ExpressionEvaluator.java --- package net.sf.navigator.taglib; import javax.servlet.jsp.JspException; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.Tag; import org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager; /** * Utility class to help with the evaluation of JSTL Expression Language. It * mainly encapsulates the calls to ExpressionEvaluationManager to ease the * use of this class. */ public class ExpressionEvaluator { //~ Instance fields ======================================================== private PageContext context; private Tag tag; //~ Constructors =========================================================== public ExpressionEvaluator(Tag tag, PageContext context) { this.tag = tag; this.context = context; } //~ Methods ================================================================ /** * Evaluate expression in attrValue. * * @return evaluate expression of attrValue, null if attrValue is null. */ public Object eval(String attrName, String attrValue, Class returnClass) throws JspException { Object result = null; if (attrValue != null) { result = ExpressionEvaluatorManager.evaluate(attrName, attrValue, returnClass, tag, context); } return result; } public String evalString(String attrName, String attrValue) throws JspException { return (String) eval(attrName, attrValue, String.class); } public boolean evalBoolean(String attrName, String attrValue) throws JspException { Boolean rtn = (Boolean) eval(attrName, attrValue, Boolean.class); if (rtn != null) { return rtn.booleanValue(); } else { return false; } } public long evalLong(String attrName, String attrValue) throws JspException { Long rtn = (Long) eval(attrName, attrValue, Long.class); if (rtn != null) { return rtn.longValue(); } else { return -1L; } } public int evalInt(String attrName, String attrValue) throws JspException { Integer rtn = (Integer) eval(attrName, attrValue, Integer.class); if (rtn != null) { return rtn.intValue(); } else { return -1; } } } Index: DisplayMenuTag.java =================================================================== RCS file: /cvsroot/struts-menu/navigator/src/java/net/sf/navigator/taglib/DisplayMenuTag.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** DisplayMenuTag.java 18 Dec 2003 23:21:18 -0000 1.10 --- DisplayMenuTag.java 20 Dec 2003 13:32:18 -0000 1.11 *************** *** 6,27 **** package net.sf.navigator.taglib; - import net.sf.navigator.displayer.MenuDisplayer; import net.sf.navigator.menu.MenuComponent; import net.sf.navigator.menu.MenuRepository; - import org.apache.commons.lang.StringUtils; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - import org.apache.struts.util.RequestUtils; - import java.net.MalformedURLException; - - import javax.servlet.http.HttpServletRequest; - import javax.servlet.jsp.JspException; - import javax.servlet.jsp.tagext.TagSupport; - /** --- 6,24 ---- package net.sf.navigator.taglib; + import java.net.MalformedURLException; + + import javax.servlet.http.HttpServletRequest; + import javax.servlet.jsp.JspException; + import javax.servlet.jsp.tagext.TagSupport; + + import net.sf.navigator.displayer.MenuDisplayer; import net.sf.navigator.menu.MenuComponent; import net.sf.navigator.menu.MenuRepository; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts.util.RequestUtils; /** *************** *** 169,173 **** */ protected void setPageLocation(MenuComponent menu) ! throws MalformedURLException { HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); --- 166,170 ---- */ protected void setPageLocation(MenuComponent menu) ! throws MalformedURLException, JspException { HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); *************** *** 200,225 **** String url = menu.getLocation(); ! // Check if there are parameters on the value ! if ((url != null) && (url.indexOf("${") > -1)) { ! String queryString = null; ! ! if (url.indexOf("?") > -1) { ! queryString = url.substring(url.indexOf("?") + 1); ! url = url.substring(0, url.indexOf(queryString)); ! } ! ! StringBuffer sb = new StringBuffer(); ! // variable is in the URL ! if (queryString != null) { ! sb = parseString(queryString, request); ! menu.setUrl(url + sb.toString()); ! } else { ! // parse the URL, rather than the queryString ! sb = parseString(url, request); ! menu.setUrl(sb.toString()); ! } ! } else { ! menu.setUrl(url); } --- 197,206 ---- String url = menu.getLocation(); ! // Use JSTL to replace dymamic values in the URL ! ExpressionEvaluator eval = new ExpressionEvaluator(this, pageContext); ! String s; ! if ( (s = eval.evalString("url", url)) != null) { ! menu.setUrl(s); } *************** *** 248,279 **** return page; - } - - private StringBuffer parseString(String str, HttpServletRequest request) { - StringBuffer sb = new StringBuffer(); - - while (str.indexOf("${") >= 0) { - sb.append(str.substring(0, str.indexOf("${"))); - - String variable = - str.substring(str.indexOf("${") + 2, str.indexOf("}")); - String value = (String) pageContext.findAttribute(variable); - - if (value == null) { - // look for it as a request parameter - value = request.getParameter(variable); - } - - // is value still null?! - if (value == null) { - log.warn("Value for '" + variable + - "' not found in pageContext or as a request parameter"); - } - - sb.append(value); - str = str.substring(str.indexOf("}") + 1, str.length()); - } - - return sb.append(str); } --- 229,232 ---- ------------------------------------------------------- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278&alloc_id=3371&op=click _______________________________________________ struts-menu-devel mailing list [EMAIL PROTECTED] https://lists.sf.net/lists/listinfo/struts-menu-devel