> > At 17:53 01/26/01, John McNally wrote:
> > >I would prefer to see something that emphasized the "template" keyword
> > >over "screen" or at least provided a property for it so it is as easy.
> > >Also, would it not be good to include tags to add QueryData and PathInfo
> > >to the URI?

Ok,
I'll give it another try. How about a TemplateLink tag? - this is a tag 
that definitely shouldn't be missing.
There is still no QueryData or PathInfo, but it's a start.

BTW, I'd like to see a "RelativeTemplateLink" class in turbine that uses 
RelativeDynamicUri instead of DynamicUri. Are you open for this addition? I 
can send the code (and code for a RelativeTemplateLinkTag ;-)).

ingo.



Tag definition in the tld
============================================================
    <tag>
      <name>link</name>
      <tagclass>org.apache.turbine.services.jsp.tags.TemplateLinkTag</tagclass>
      <bodycontent>JSP</bodycontent>
      <attribute>
        <name>template</name>
        <required>true</required>
      </attribute>
      <attribute>
        <name>action</name>
        <required>false</required>
        <rtexprvalue>false</rtexprvalue>
      </attribute>
    </tag>



Tag.java
============================================================
package org.apache.turbine.services.jsp.tags;

/*
  * Copyright (c) 1997-1999 The Java Apache Project.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
  *
  * 1. Redistributions of source code must retain the above copyright
  *    notice, this list of conditions and the following disclaimer.
  *
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in
  *    the documentation and/or other materials provided with the
  *    distribution.
  *
  * 3. All advertising materials mentioning features or use of this
  *    software must display the following acknowledgment:
  *    "This product includes software developed by the Java Apache
  *    Project for use in the Apache JServ servlet engine project
  *    <http://java.apache.org/>."
  *
  * 4. The names "Apache JServ", "Apache JServ Servlet Engine", "Turbine",
  *    "Apache Turbine", "Turbine Project", "Apache Turbine Project" and
  *    "Java Apache Project" must not be used to endorse or promote products
  *    derived from this software without prior written permission.
  *
  * 5. Products derived from this software may not be called "Apache JServ"
  *    nor may "Apache" nor "Apache JServ" appear in their names without
  *    prior written permission of the Java Apache Project.
  *
  * 6. Redistributions of any form whatsoever must retain the following
  *    acknowledgment:
  *    "This product includes software developed by the Java Apache
  *    Project for use in the Apache JServ servlet engine project
  *    <http://java.apache.org/>."
  *
  * THIS SOFTWARE IS PROVIDED BY THE JAVA APACHE PROJECT "AS IS" AND ANY
  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE JAVA APACHE PROJECT OR
  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  * OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * This software consists of voluntary contributions made by many
  * individuals on behalf of the Java Apache Group. For more information
  * on the Java Apache Project and the Apache JServ Servlet Engine project,
  * please see <http://java.apache.org/>.
  *
  */

import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

// Turbine Classes
import org.apache.turbine.util.Log;
import org.apache.turbine.util.RunData;
import org.apache.turbine.util.DynamicURI;
import org.apache.turbine.util.template.TemplateLink;
import org.apache.turbine.services.jsp.JspService;

/**
  * Supporting class for the TemplateLink tag.
  * Uses the TemplateLink class to construct a URI
  *
  * @author <a href="mailto:[EMAIL PROTECTED]">Ingo Schuster</a>
  */
public class TemplateLinkTag extends TagSupport
{
     /**
      * template parameter defines the template to set
      * mandatory parameter
      */
     private String template;

     /**
      * The setter for template parameter
      */
     public void setTemplate(String template)
     {
         this.template = template;
     }

     /**
      * action parameter defines the action to set
      * optional parameter
      */
     private String action;

     /**
      * The setter for screen parameter
      */
     public void setAction(String action)
     {
         this.action = action;
     }

     public int doStartTag() throws JspException
     {
         RunData data = 
(RunData)pageContext.getAttribute(JspService.RUNDATA, 
PageContext.REQUEST_SCOPE);

         TemplateLink link = new TemplateLink( data );
         DynamicURI uri = link.setPage( template );
         if ( action != null ) uri = uri.setAction( action );

         try
         {
             if (uri != null) {
                 pageContext.getOut().print(uri.toString());
             }
         }
         catch (Exception e)
         {
             String message = "Error processing TemplateLink-tag, 
parameter: template='"+ template + "', action='" +action +"'";
             Log.error(message, e);
             try
             {
                 data.getOut().print( message );
             }
             catch(java.io.IOException ioe) {}
         }

         return EVAL_BODY_INCLUDE;
     }

}



------------------------------------------------------------
To subscribe:        [EMAIL PROTECTED]
To unsubscribe:      [EMAIL PROTECTED]
Search: <http://www.mail-archive.com/turbine%40list.working-dogs.com/>
Problems?:           [EMAIL PROTECTED]

Reply via email to