craigmcc 01/02/02 19:23:25 Modified: src/doc struts-bean.xml src/share/org/apache/struts/taglib/bean CookieTag.java HeaderTag.java ParameterTag.java web/test bean-cookie.jsp bean-header.jsp bean-parameter.jsp Log: Implement a default "value" attribute on <bean:cookie>, <bean:header>, and <bean:parameter> that specify what is returned, instead of a runtime exception, if the specified cookie, header, or parameter is not included on this request. PR: BugZilla Bug #493 Submitted by: [EMAIL PROTECTED] (Rusty Knabe) Revision Changes Path 1.18 +36 -6 jakarta-struts/src/doc/struts-bean.xml Index: struts-bean.xml =================================================================== RCS file: /home/cvs/jakarta-struts/src/doc/struts-bean.xml,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- struts-bean.xml 2001/01/26 20:12:32 1.17 +++ struts-bean.xml 2001/02/03 03:23:24 1.18 @@ -50,8 +50,8 @@ (if <code>multiple</code> is not specified) or <code>Cookie[]</code> (if <code>multiple</code> is specified).</p> - <p>If no cookie with the specified name can be located, a request time - exception will be thrown.</p> + <p>If no cookie with the specified name can be located, and no default + value is specified, a request time exception will be thrown.</p> </info> <attribute> @@ -88,6 +88,16 @@ </info> </attribute> + <attribute> + <name>value</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + <info> + <p>The default cookie value to return if no cookie with the + specified name was included in this request.</p> + </info> + </attribute> + </tag> @@ -241,8 +251,8 @@ (if <code>multiple</code> is not specified) or <code>String[]</code> (if <code>multiple</code> is specified).</p> - <p>If no header with the specified name can be located, a request time - exception will be thrown.</p> + <p>If no header with the specified name can be located, and no default + value is specified, a request time exception will be thrown.</p> </info> <attribute> @@ -280,6 +290,16 @@ </info> </attribute> + <attribute> + <name>value</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + <info> + <p>The default header value to return if no header with the + specified name was included in this request.</p> + </info> + </attribute> + </tag> @@ -534,8 +554,8 @@ (if <code>multiple</code> is not specified) or <code>String[]</code> (if <code>multiple</code> is specified).</p> - <p>If no request parameter with the specified name can be located, a - request time exception will be thrown.</p> + <p>If no request parameter with the specified name can be located, and + no default value is specified, a request time exception will be thrown.</p> </info> <attribute> @@ -570,6 +590,16 @@ <info> <p>Specifies the name of the request parameter whose value, or values, is to be retrieved.</p> + </info> + </attribute> + + <attribute> + <name>value</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + <info> + <p>The default parameter value to return if no parameter with the + specified name was included in this request.</p> </info> </attribute> 1.7 +21 -4 jakarta-struts/src/share/org/apache/struts/taglib/bean/CookieTag.java Index: CookieTag.java =================================================================== RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/bean/CookieTag.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- CookieTag.java 2000/12/28 02:09:08 1.6 +++ CookieTag.java 2001/02/03 03:23:24 1.7 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/bean/CookieTag.java,v 1.6 2000/12/28 02:09:08 craigmcc Exp $ - * $Revision: 1.6 $ - * $Date: 2000/12/28 02:09:08 $ + * $Header: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/bean/CookieTag.java,v 1.7 2001/02/03 03:23:24 craigmcc Exp $ + * $Revision: 1.7 $ + * $Date: 2001/02/03 03:23:24 $ * * ==================================================================== * @@ -82,7 +82,7 @@ * cookie received with this request. * * @author Craig R. McClanahan - * @version $Revision: 1.6 $ $Date: 2000/12/28 02:09:08 $ + * @version $Revision: 1.7 $ $Date: 2001/02/03 03:23:24 $ */ public class CookieTag extends TagSupport { @@ -142,6 +142,20 @@ } + /** + * The default value to return if no cookie of the specified name is found. + */ + protected String value = null; + + public String getValue() { + return (this.value); + } + + public void setValue(String value) { + this.value = value; + } + + // --------------------------------------------------------- Public Methods @@ -163,6 +177,8 @@ if (name.equals(cookies[i].getName())) values.add(cookies[i]); } + if ((values.size() < 1) && (value != null)) + values.add(new Cookie(name, value)); if (values.size() < 1) { JspException e = new JspException (messages.getMessage("getter.cookie", name)); @@ -193,6 +209,7 @@ id = null; multiple = null; name = null; + value = null; } 1.6 +23 -4 jakarta-struts/src/share/org/apache/struts/taglib/bean/HeaderTag.java Index: HeaderTag.java =================================================================== RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/bean/HeaderTag.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- HeaderTag.java 2000/12/28 02:09:09 1.5 +++ HeaderTag.java 2001/02/03 03:23:24 1.6 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/bean/HeaderTag.java,v 1.5 2000/12/28 02:09:09 craigmcc Exp $ - * $Revision: 1.5 $ - * $Date: 2000/12/28 02:09:09 $ + * $Header: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/bean/HeaderTag.java,v 1.6 2001/02/03 03:23:24 craigmcc Exp $ + * $Revision: 1.6 $ + * $Date: 2001/02/03 03:23:24 $ * * ==================================================================== * @@ -82,7 +82,7 @@ * header received with this request. * * @author Craig R. McClanahan - * @version $Revision: 1.5 $ $Date: 2000/12/28 02:09:09 $ + * @version $Revision: 1.6 $ $Date: 2001/02/03 03:23:24 $ */ public class HeaderTag extends TagSupport { @@ -142,6 +142,20 @@ } + /** + * The default value to return if no header of the specified name is found. + */ + protected String value = null; + + public String getValue() { + return (this.value); + } + + public void setValue(String value) { + this.value = value; + } + + // --------------------------------------------------------- Public Methods @@ -156,6 +170,8 @@ if (multiple == null) { String value = ((HttpServletRequest) pageContext.getRequest()).getHeader(name); + if ((value == null) && (this.value != null)) + value = this.value; if (value == null) { JspException e = new JspException (messages.getMessage("getter.header", name)); @@ -173,6 +189,8 @@ ((HttpServletRequest) pageContext.getRequest()).getHeaders(name); while (items.hasMoreElements()) values.add(items.nextElement()); + if ((values.size() == 0) && (this.value != null)) + values.add(this.value); String headers[] = new String[values.size()]; if (headers.length == 0) { JspException e = new JspException @@ -196,6 +214,7 @@ id = null; multiple = null; name = null; + value = null; } 1.5 +28 -4 jakarta-struts/src/share/org/apache/struts/taglib/bean/ParameterTag.java Index: ParameterTag.java =================================================================== RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/bean/ParameterTag.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- ParameterTag.java 2000/10/30 06:02:13 1.4 +++ ParameterTag.java 2001/02/03 03:23:24 1.5 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/bean/ParameterTag.java,v 1.4 2000/10/30 06:02:13 craigmcc Exp $ - * $Revision: 1.4 $ - * $Date: 2000/10/30 06:02:13 $ + * $Header: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/bean/ParameterTag.java,v 1.5 2001/02/03 03:23:24 craigmcc Exp $ + * $Revision: 1.5 $ + * $Date: 2001/02/03 03:23:24 $ * * ==================================================================== * @@ -79,7 +79,7 @@ * parameter received with this request. * * @author Craig R. McClanahan - * @version $Revision: 1.4 $ $Date: 2000/10/30 06:02:13 $ + * @version $Revision: 1.5 $ $Date: 2001/02/03 03:23:24 $ */ public class ParameterTag extends TagSupport { @@ -140,6 +140,21 @@ } + /** + * The default value to return if no parameter of the specified name is + * found. + */ + protected String value = null; + + public String getValue() { + return (this.value); + } + + public void setValue(String value) { + this.value = value; + } + + // --------------------------------------------------------- Public Methods @@ -154,6 +169,8 @@ if (multiple == null) { String value = pageContext.getRequest().getParameter(name); + if ((value == null) && (this.value != null)) + value = this.value; if (value == null) { JspException e = new JspException (messages.getMessage("getter.parameter", name)); @@ -168,6 +185,12 @@ // Deal with multiple parameter values String values[] = pageContext.getRequest().getParameterValues(name); + if ((values == null) || (values.length == 0)) { + if (this.value != null) { + values = new String[1]; + values[0] = this.value; + } + } if ((values == null) || (values.length == 0)) { JspException e = new JspException (messages.getMessage("getter.parameter", name)); @@ -190,6 +213,7 @@ id = null; multiple = null; name = null; + value = null; } 1.2 +50 -0 jakarta-struts/web/test/bean-cookie.jsp Index: bean-cookie.jsp =================================================================== RCS file: /home/cvs/jakarta-struts/web/test/bean-cookie.jsp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- bean-cookie.jsp 2000/09/05 21:28:04 1.1 +++ bean-cookie.jsp 2001/02/03 03:23:25 1.2 @@ -62,5 +62,55 @@ </tr> </table> +<bean:cookie id="dummy" name="UNKNOWN_COOKIE" value="UNKNOWN_VALUE"/> + +<table border="1"> + <tr> + <th>Property Name</th> + <th>Correct Value</th> + <th>Test Result</th> + </tr> + <tr> + <td>comment</td> + <td><jsp:getProperty name="dummy" property="comment"/></td> + <td><bean:write name="dummy" property="comment"/></td> + </tr> + <tr> + <td>domain</td> + <td><jsp:getProperty name="dummy" property="domain"/></td> + <td><bean:write name="dummy" property="domain"/></td> + </tr> + <tr> + <td>maxAge</td> + <td><jsp:getProperty name="dummy" property="maxAge"/></td> + <td><bean:write name="dummy" property="maxAge"/></td> + </tr> + <tr> + <td>name</td> + <td><jsp:getProperty name="dummy" property="name"/></td> + <td><bean:write name="dummy" property="name"/></td> + </tr> + <tr> + <td>path</td> + <td><jsp:getProperty name="dummy" property="path"/></td> + <td><bean:write name="dummy" property="path"/></td> + </tr> + <tr> + <td>secure</td> + <td><jsp:getProperty name="dummy" property="secure"/></td> + <td><bean:write name="dummy" property="secure"/></td> + </tr> + <tr> + <td>value</td> + <td><jsp:getProperty name="dummy" property="value"/></td> + <td><bean:write name="dummy" property="value"/></td> + </tr> + <tr> + <td>version</td> + <td><jsp:getProperty name="dummy" property="version"/></td> + <td><bean:write name="dummy" property="version"/></td> + </tr> +</table> + </body> </html> 1.2 +5 -0 jakarta-struts/web/test/bean-header.jsp Index: bean-header.jsp =================================================================== RCS file: /home/cvs/jakarta-struts/web/test/bean-header.jsp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- bean-header.jsp 2000/09/05 21:28:05 1.1 +++ bean-header.jsp 2001/02/03 03:23:25 1.2 @@ -33,6 +33,11 @@ <% } %> + <bean:header id="dummy" name="UNKNOWN-HEADER" value="UNKNOWN VALUE"/> + <tr> + <td>UNKNOWN HEADER</td> + <td><bean:write name="dummy"/></td> + </tr> </table> </body> 1.2 +6 -0 jakarta-struts/web/test/bean-parameter.jsp Index: bean-parameter.jsp =================================================================== RCS file: /home/cvs/jakarta-struts/web/test/bean-parameter.jsp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- bean-parameter.jsp 2000/09/05 21:28:05 1.1 +++ bean-parameter.jsp 2001/02/03 03:23:25 1.2 @@ -17,6 +17,7 @@ <bean:parameter id="param1" name="param1"/> <bean:parameter id="param2" name="param2"/> +<bean:parameter id="param3" name="param3" value="UNKNOWN VALUE"/> <table border="1"> <tr> @@ -33,6 +34,11 @@ <td>param2</td> <td>value2</td> <td><%= param2 %></td> + </tr> + <tr> + <td>param3</td> + <td>UNKNOWN VALUE</td> + <td><%= param3 %></td> </tr> </table>