You can also check out http://www.opensymphony.com/formtags, which neatly
solves this problem.
>From: Michael Chelmowski <[EMAIL PROTECTED]>
>Reply-To: A mailing list about Java Server Pages specification and
>reference <[EMAIL PROTECTED]>
>To: [EMAIL PROTECTED]
>Subject: Re: Help need: Custom tags in JSP
>Date: Thu, 29 Aug 2002 12:33:51 +0200
>
>Hi there,
>
>First off i would suggest using only one custom tag insted of these two:
>
> <input type='text'
> name='<gan:getFullNameForItem name="Weight" />'
> value='<gan:getValueForItem name="Weight" />' />
>
>so that the JSP would look like:
>
> <gan:inputfieldwriter property="Weight"/>
>
>The reason being is that I the way you presented the problem it seems
>that you're always retrieving a Key/Value pair from the HashMap and
>placing it in one resulting HTML element so it makes sense to do it like
>that.
>
>Eventually you will need two tags
>
>Gan:array
>Gan:inputfieldwriter
>
>The Gan array must allow to nest other tags in it therefore your class
>must extend TagSupport.
>
>The tag must implement the doStartTag and doEndTag methods. The doStart
>will probably define your basic table element etc. it must then return
>EVAL_BODY_INCLUDE to tell the Jspwriter that this tag has a body and
>something must be valuated between its start and end tags. The doEndTag
>method is executed when the </gan:array> element is encountered, this
>will probably close the table element.
>
>public class GanArray extends TagSupport {
>
>
>public int doStartTag() throws JspException {
> //Do something
> return EVAL_BODY_INCLUDE;
>}
>public int doEndTag() throws JspException
> {
> //Do something
> return EVAL_PAGE;
> }
>
>}
>
>The second tag only needs to implement the doStartMethod. It will
>generate the required HTML to print the input field.
>
>public class InputFieldWirter extends BodyTagSupport {
>
>public int doStartTag() throws JspException {
> //Do something
> return EVAL_BODY_TAG;
>}
>
>}
>
>The request is of course always accessible in your taghandler by calling
>the following statement:
>HttpServletRequest req = (HttpServletRequest)
>this.pageContext.getRequest();
>
>Personally I would create a third (abstract) tag which would be used as
>base for all standard html elements. This class would define fields
>like: name, styleclass, onmouseover and all other common html
>parameters. Your InputFieldWirter would then only have to extend this
>tag and implement only the functionality which is specific to it. For a
>good implementation check out Apache's Base Tags included in their
>custom taglib.
>
>Hope this helps
>
>MIchael
>-----Oorspronkelijk bericht-----
>Van: A mailing list about Java Server Pages specification and reference
>[mailto:[EMAIL PROTECTED]] Namens Cidoni_b
>Verzonden: donderdag 29 augustus 2002 11:44
>Aan: [EMAIL PROTECTED]
>Onderwerp: Help need: Custom tags in JSP
>
>I am trying to use custom tags in my JSP. I have illustrated the
>simplified version of my problem below. Can anyone tell me how to go
>about doing it?
>
>Problem definition:
>--------------------
>I have a JSP in which I retrieve a hashtable from request object using
>request.getAttribute() method. I need to display the commodity details
>present in the Hashtable using custom tags.
>
>Input Hashtable contents(given in Key: Value format)
>---------------------------------------------------
>
>"Commodity.length": "2"
>"Commodity[0].Weight": "34"
>"Commodity[1].Weight": "43"
>
>Please note that the above keys are not Java arrays, they are just
>strings
>
>Required JSP format
>-------------------
>
><gan:array name = "Commodity">
><table>
> <tr>
> <input type='text'
> name='<gan:getFullNameForItem name="Weight" />'
> value='<gan:getValueForItem name="Weight" />' />
> </tr>
></table>
></gan:array>
>
>
>Desired HTML output:
>--------------------
>
><table>
> <tr>
> <input type='text'
> name='Commodity[0].Weight'
> value='34' />
> <input type='text'
> name='Commodity[1].Weight'
> value='43' />
> </tr>
></table>
>
>
>My question:
>------------
>How can I go about implementing the tags starting with "gan:"?
>
>Please note that there can be nested gan:array tags.
>
>=========================
>To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff
>JSP-INTEREST".
>For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST
>DIGEST".
>Some relevant FAQs on JSP/Servlets can be found at:
>
> http://archives.java.sun.com/jsp-interest.html
> http://java.sun.com/products/jsp/faq.html
> http://www.esperanto.org.nz/jsp/jspfaq.jsp
> http://www.jguru.com/faq/index.jsp
> http://www.jspinsider.com
>
>===========================================================================
>To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff
>JSP-INTEREST".
>For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST
>DIGEST".
>Some relevant FAQs on JSP/Servlets can be found at:
>
> http://archives.java.sun.com/jsp-interest.html
> http://java.sun.com/products/jsp/faq.html
> http://www.esperanto.org.nz/jsp/jspfaq.jsp
> http://www.jguru.com/faq/index.jsp
> http://www.jspinsider.com
-----------------------------------------------
Joseph B. Ottinger [EMAIL PROTECTED]
http://enigmastation.com IT Consultant
_________________________________________________________________
Chat with friends online, try MSN Messenger: http://messenger.msn.com
===========================================================================
To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST DIGEST".
Some relevant FAQs on JSP/Servlets can be found at:
http://archives.java.sun.com/jsp-interest.html
http://java.sun.com/products/jsp/faq.html
http://www.esperanto.org.nz/jsp/jspfaq.jsp
http://www.jguru.com/faq/index.jsp
http://www.jspinsider.com