Trying to store a custom tag in a database field

I have a simple custom tag that displays an image.  We'll call it <cf_checkmark>.  All it does is display a nice little checkmark.  Saves me from having to rewrite the <img src="...."> tag over and over and over.  I want to store this tag in a database field, so it is returned as a value in my query results.  (I'm not storing the code in the database, just the text "<cf_checkmark>").  Only problem is coldfusion doesn't render the custom tag when I output the result.  The tag is there, it's just not rendering or executing.  If I do a View Source I can see <cf_checkmark> in the source.  It just doesn't execute or render.
My guess is that ColdFusion executes all the cf code before it outputs the query results.  Therefore it doesn't recognize the text in the query result as a custom tag.  Is there any way to get this to work?

Write it to a file and cfinclude the file.
But for one line of code, why bother.

Similar Messages

  • Trying to create a custom tag

    I want to create a custom tag that has a attribute that ask
    for a number. like below...
    <cf_makeattributes number="?">
    Now say I made that number something like 5
    <cf_makeattributesnumber=
    "5">
    I would like for the tag to take that number and make 5
    attributes called "Form" in a array from 1 to 5 like below...
    <cfset attributes.form = arraynew(1)>
    <cfloop index="i" from="1" to="#attributes.number#">
    #attributes.form
    </cfloop>
    Is it possible to make a tag that ask for a number like 5 and
    make 5 attributes and within the same tag assign values to those 5
    attributes. for example consider the above.
    <cf_makeattributes number="5" attribute1="hi"
    attribute2="hello" attribute3="howdy" attribute4="hey"
    attribute5="HOWE!">
    or say i want to make 2 attributes and assign 2 values to
    those attributes
    <cf_makeattributes number="2" attribute1="This tag asked
    for 2 numbers" attribute2="and therefore gave me the ability to
    make 2 attributes">
    I also have another question that kinda applies to the
    question above.
    How does the coldfusion server read the tags. for example
    look at below
    <cf_makeattributes number="2" attribute1="hello"
    attribute2="world">
    would the server read it like this...
    step 1
    <
    cf_makeattributes number="2" attribute1="hello"
    attribute2="world">
    step 2
    <cf_makeattributes
    number="2" attribute1="hello" attribute2="world">
    step 3
    makeattributes.CFM (it now goes to the template that holds
    the tags scripts)
    Or does it first read all thats bold below
    <cf_makeattributes
    number="2" attribute1="hello" attribute2="world">
    then goes to the makeattributes template. Is there away I
    can compile my script one step at a time like C# and C++ just to
    see the steps
    PLUS Do i have to put my custom tag into a specific folder or
    can I just put it in the same folder as the document thats calling
    the custom tag

    > I could either make a bunch of attributes that will grab
    all the
    > values or I could loop out a array of attributes. Thats
    my goal
    I was with you until that line. The term attributes is
    confusing in this context. I'm not sure if you're talking about
    attributes in a generic sense or the custom tag attribute
    scope.
    > Now here wat im thinking now. What if instead I put the
    forms in a list. something like this...
    > <cf_Formentry
    Forms="#Form.one#,#form.two#,#form.three#">
    Do you mean form
    fields?
    Let's try this from a different angle. Can you give a
    concrete example of the desired results using this form?
    <form>
    <input name="username1" value="Alice">
    <input name="username2" value="Bob">
    <input name="username3" value="Kyle">
    <input name="username4" value="Michelle">
    <input name="username5" value="Robert">
    </form>

  • Re: Using ScopeCache custom tag

    Hi, I am quite new to ColdFusion and I have a calendar that
    is quite slow due to the cfloops it uses to build the calendar. As
    the page does not change very often I wanted to use Raymond
    Camden's ScopeCache custom tag. However, for some reason the custom
    tag was not getting picked up from the custom tag folder on the
    server. I have successfully used components so have tried to
    convert the custom tag to a component but get the following error
    message:
    Routines cannot be declared more than once.
    The routine scope_Cache has been declared twice in the same
    file.
    This is the component:
    <!---
    Name : scopeCache
    Author : Raymond Camden ([email protected])
    Created : December 12, 2002
    Last Updated : November 6, 2003
    History : Allow for clearAll (rkc 11/6/03)
    : Added dependancies, timeout, other misc changes (rkc
    1/8/04)
    Purpose : Allows you to cache content in various scopes.
    Documentation:
    This tag allows you to cache content and data in various RAM
    based scopes.
    The tag takes the following attributes:
    name/cachename: The name of the data. (required)
    scope: The scope where cached data will reside. Must be
    either session,
    application, or server. (required)
    timeout: When the cache will timeout. By default, the year
    3999 (i.e., never).
    Value must be either a date/time stamp or a number
    representing the
    number of seconds until the timeout is reached. (optional)
    dependancies: This allows you to mark other cache items as
    dependant on this item.
    When this item is cleared or timesout, any child will also
    be cleared.
    Also, any children of those children will also be cleared.
    (optional)
    clear: If passed and if true, will clear out the cached
    item. Note that
    this option will NOT recreate the cache. In other words, the
    rest of
    the tag isn't run (well, mostly, but don't worry).
    clearAll: Removes all data from this scope. Exits the tag
    immidiately.
    disabled: Allows for a quick exit out of the tag. How would
    this be used? You can
    imagine using disabled="#request.disabled#" to allow for a
    quick way to
    turn on/off caching for the entire site. Of course, all
    calls to the tag
    would have to use the same value.
    License : Use this as you will. If you enjoy it and it helps
    your application,
    consider sending me something from my Amazon wish list:
    http://www.amazon.com/o/registry/2TCL1D08EZEYE
    --->
    <cfcomponent>
    <cffunction name="scope_Cache" access="public"
    returntype="string">
    <cfargument name="cachename" type="string"
    required="yes">
    <cfargument name="scope" type="string" required="yes">
    <cfargument name="timeout" type="string"
    required="yes">
    <cfprocessingdirective pageencoding="utf-8">
    <!--- allow for quick exit
    <cfif isDefined("arguments.disabled") and
    arguments.disabled>
    <cfexit method="exitTemplate">
    </cfif>
    <!--- Allow for cachename in case we use cfmodule --->
    <cfif isDefined("arguments.cachename")>
    <cfset arguments.name = arguments.cachename>
    </cfif>--->
    <!--- Attribute validation --->
    <cfif (not isDefined("arguments.name") or not
    isSimpleValue(arguments.name)) and not
    isDefined("arguments.clearall")>
    <cfthrow message="scopeCache: The name attribute must be
    passed as a string.">
    </cfif>
    <cfif not isDefined("arguments.scope") or not
    isSimpleValue(arguments.scope) or not
    listFindNoCase("application,session,server",arguments.scope)>
    <cfthrow message="scopeCache: The scope attribute must be
    passed as one of: application, session, or server.">
    </cfif>
    <!--- The default timeout is no timeout, so we use the
    year 3999. --->
    <cfparam name="arguments.timeout"
    default="#createDate(3999,1,1)#">
    <!--- Default dependancy list --->
    <cfparam name="arguments.dependancies" default=""
    type="string">
    <cfif not isDate(arguments.timeout) and (not
    isNumeric(arguments.timeout) or arguments.timeout lte 0)>
    <cfthrow message="scopeCache: The timeout attribute must
    be either a date/time or a number greather zero.">
    <cfelseif isNumeric(arguments.timeout)>
    <!--- convert seconds to a time --->
    <cfset arguments.timeout =
    dateAdd("s",arguments.timeout,now())>
    </cfif>
    <!--- create pointer to scope --->
    <cfset ptr = structGet(arguments.scope)>
    <!--- init cache root --->
    <cfif not structKeyExists(ptr,"scopeCache")>
    <cfset ptr["scopeCache"] = structNew()>
    </cfif>
    <cfif isDefined("arguments.clearAll")>
    <cfset structClear(ptr["scopeCache"])>
    <cfexit method="exitTag">
    </cfif>
    <!--- This variable will store all the guys we need to
    update --->
    <cfset cleanup = "">
    <!--- This variable determines if we run the caching.
    This is used when we clear a cache --->
    <cfset dontRun = false>
    <cfif isDefined("arguments.clear") and arguments.clear
    and structKeyExists(ptr.scopeCache,arguments.name) and
    thisTag.executionMode is "start">
    <cfif
    structKeyExists(ptr.scopeCache[arguments.name],"dependancies")>
    <cfset cleanup =
    ptr.scopeCache[arguments.name].dependancies>
    </cfif>
    <cfset structDelete(ptr.scopeCache,arguments.name)>
    <cfset dontRun = true>
    </cfif>
    <cfif not dontRun>
    <cfif thisTag.executionMode is "start">
    <!--- determine if we have the info in cache already
    --->
    <cfif structKeyExists(ptr.scopeCache,arguments.name)>
    <cfif
    dateCompare(now(),ptr.scopeCache[arguments.name].timeout) is -1>
    <cfif not isDefined("arguments.r_Data")>
    <cfoutput>#ptr.scopeCache[arguments.name].value#</cfoutput>
    <cfelse>
    <cfset caller[arguments.r_Data] =
    ptr.scopeCache[arguments.name].value>
    </cfif>
    <cfexit>
    </cfif>
    </cfif>
    <cfelse>
    <!--- It is possible I'm here because I'm refreshing. If
    so, check my dependancies --->
    <cfif structKeyExists(ptr.scopeCache,arguments.name) and
    structKeyExists(ptr.scopeCache[arguments.name],"dependancies")>
    <cfif
    structKeyExists(ptr.scopeCache[arguments.name],"dependancies")>
    <cfset cleanup = listAppend(cleanup,
    ptr.scopeCache[arguments.name].dependancies)>
    </cfif>
    </cfif>
    <cfset ptr.scopeCache[arguments.name] = structNew()>
    <cfif not isDefined("arguments.data")>
    <cfset ptr.scopeCache[arguments.name].value =
    thistag.generatedcontent>
    <cfelse>
    <cfset ptr.scopeCache[arguments.name].value =
    arguments.data>
    </cfif>
    <cfset ptr.scopeCache[arguments.name].timeout =
    arguments.timeout>
    <cfset ptr.scopeCache[arguments.name].dependancies =
    arguments.dependancies>
    <cfif isDefined("arguments.r_Data")>
    <cfset caller[arguments.r_Data] =
    ptr.scopeCache[arguments.name].value>
    </cfif>
    </cfif>
    </cfif>
    <!--- Do I need to clean up? --->
    <cfset z = 1>
    <cfloop condition="listLen(cleanup)">
    <cfset z = z+1><cfif z gt 100><cfthrow
    message="ack"></cfif>
    <cfset toKill = listFirst(cleanup)>
    <cfset cleanUp = listRest(cleanup)>
    <cfif structKeyExists(ptr.scopeCache, toKill)>
    <cfloop index="item"
    list="#ptr.scopeCache[toKill].dependancies#">
    <cfif not listFindNoCase(cleanup, item)>
    <cfset cleanup = listAppend(cleanup, item)>
    </cfif>
    </cfloop>
    <cfset structDelete(ptr.scopeCache,toKill)>
    </cfif>
    </cfloop>
    <cfreturn scope_Cache>
    </cffunction>
    </cfcomponent>

    Hi, thanks to both of you for your help. I reverted back the
    custom tag and it was picked up this time - I don't know what
    happened before. The functionality works as expected but I have hit
    another problem and I am hoping I can tap your combined ColdFusion
    wisdom to solve!!
    The calendar returns leave records for staff and filters the
    records using a querystring variable appended when the user clicks
    on a particular month. However, what members of staff the user sees
    depends on the data held in the users' session variables based on
    their authority. The reason I wanted to use caching is because the
    page takes a good ten seconds to run because of the use of cfloops
    for the members of staff and the days of the week to dynamically
    build the page. Using the custom tag would have worked if all
    members of staff saw the same calendar data and could only see one
    month. Can you see anyway I can speed up the page and do you think
    caching is the way forward here?

  • Custom Tag Library - error in IWS

    My environment: Solaris 2.7, IWS4.1 SP3.
    I currently try to run the Custom Tag Library example from IWS itself in
    server_root/plugins/samples/servlets/taglibs. I follow the instructions to
    config the IWS but fail to run the example. I turn on JSP debugging and
    find the following error messages:
    [12/Oct/2000:13:03:10] info (28609): Service(): uri=/jsps/test-tags.jsp
    cgiScriptName=/jsps/test-tags.jsp token=null cached=false
    [12/Oct/2000:13:03:10] info (28609): Internal Info: loading servlet
    /jsps/test-tags.jsp
    [12/Oct/2000:13:03:10] info (28609): JSP: This is a jsp 1.x file
    [12/Oct/2000:13:03:10] info (28609): JSP: Before JSP1x compiler.compile,
    servletName = /jsps/test-tags.jsp servletPath =
    /u01/devin/docs/jsps/test-tags.jsp & dir = ../ClassCache
    [12/Oct/2000:13:03:10] info (28609): JSP1x Jasper Trace: Package name is:
    jsps.jsps
    [12/Oct/2000:13:03:10] info (28609): JSP1x Jasper Trace: Class name is:
    test0002dtags_jsp
    [12/Oct/2000:13:03:10] info (28609): JSP1x Jasper Trace: Java file name is:
    /opt/netscape/server4/https-devin/config/../ClassCache/_jsps/_jsps/_test_000
    2dtags_jsp.java
    [12/Oct/2000:13:03:10] info (28609): JSP1x Jasper Trace: Class file name is:
    /opt/netscape/server4/https-devin/config/../ClassCache/_jsps/_jsps/_test_000
    2dtags_jsp.class
    [12/Oct/2000:13:03:10] info (28609): JSP1x Jasper Trace:
    Handling Directive: page {language=java}
    [12/Oct/2000:13:03:10] info (28609): JSP1x Jasper Trace: Accepted
    org.apache.jasper.compiler.Parser$Directive at /jsps/test-tags.jsp(0,0)
    [12/Oct/2000:13:03:10] info (28609): JSP1x Jasper Trace:
    Handling Directive: taglib {uri=/jsps/test-tags.jar, prefix=tt}
    [12/Oct/2000:13:03:10] info (28609): JSP1x Jasper Trace: Copying
    /jsps/test-tags.jar into
    /opt/netscape/server4/https-devin/config/../ClassCache//jsps/test-tags.jar
    [12/Oct/2000:13:03:10] info (28609): JSP1x Jasper Trace: Adding jar
    /opt/netscape/server4/https-devin/config/../ClassCache//jsps/test-tags.jar
    to my classpath
    [12/Oct/2000:13:03:10] info (28609): Aborting JVM
    [12/Oct/2000:13:03:10] info (28609): Exiting JVM due to: jvm_abort () and
    jvm.exitOnAbort > 0
    [12/Oct/2000:13:03:10] info (28609): JVM exit statistics:
    AttachedThreads/Max=1/1, ActiveThreads/Max=1/1
    [12/Oct/2000:13:03:11] info (28716): Initializing MMapSession Manager to
    hold a maximum of (1000) sessions, each of which can store a maximum of
    (100) values and no value size bigger than (1024) bytes, with a timeout
    value of (1800) seconds
    IWS keeps aborting JVM and one can see from the log that it abort jvm when
    trying to :
    [12/Oct/2000:13:03:10] info (28609): JSP1x Jasper Trace: Adding jar
    /opt/netscape/server4/https-devin/config/../ClassCache//jsps/test-tags.jar
    to my classpath
    [12/Oct/2000:13:03:10] info (28609): Aborting JVM
    I have tried another much simple Custome Tag Library example that only contain a simple tag that do output to page, but still getting the same error.

    I had the same issue with WAS 6.1.0.2. I do not have a solution, but a workaround. I hope the workaround I have works for you too.
    In my case, I have the TLD files deployed in a jar. So, the JSP 2.0 container is supposed to read those TLD files from the jar file. Since that was not happening, I extracted the TLD file from the jar file and placed it under my web project's WEB-INF folder.
    I restarted my server and after that it worked.
    Look at the IBM site to see if they have come up with a patch for WAS 6.0.
    Hope this helps.
    -Javier

  • Make new custom tag in A2

    Good evening,
    I'm trying to add a custom tag to an image in Aperture 2.0. I've looked all over the internet and find no examples what so ever of AS and Aperture 2.0.
    I have a few guesses that produce one of two different errors - but no idea how to actually make this work. Any ideas ?
    tell application "Aperture"
    copy selection to theSel
    repeat with curImg in theSel
    class of curImg
    --image version
    -- make new custom tag at curImg with properties {name:"NewTag", value:"New Tag's Value"}
    -- set aNewTag to make new custom tag with properties {name:"NewTag", value:"New Tag's Value"}
    -- Aperture got an error: Can’t make or move that element into that container.
    -- make new custom tag at end of curImg with properties {name:"NewTag", value:"New Tag's Value"}
    -- make new custom tag at end of (curImg) with properties {name:"NewTag", value:"New Tag's Value"}
    -- make new custom tag at end of custom tags of curImg with properties {name:"NewTag", value:"New Tag's Value"}
    -- make new custom tag at end of curImg's custom tags with properties {name:"NewTag", value:"New Tag's Value"}
    --Aperture got an error: Can’t make application "Aperture" into type specifier.
    end repeat
    end tell

    If I recall, it was done because how tags were to be handled in 1.2 was very different from 1.1 and it was felt that developers shouldn't rely on implementation specific classes (unless they were SPI) for several other reasons (application portability being the big one here).
    If it's felt that this was the wrong decision, please feel free to log an issue [1] against the RI (to date, no one has).
    As to the 'borked' dependency URLs, please log an issue [1] if you find these. We have nightly builds going that work from a clean workspace and checking today's result, it seems ok.
    [1] https://javaserverfaces.dev.java.net/issues

  • How To create a custom tag in jsf

    I'm trying to create a custom tag in jsf.what should be the approach to create it.it would be better if somebody will explain me from the skretch.

    There's a decent tutorial here, Priyo:
    http://www.exadel.com/tutorial/jsf/HowToWriteYourOwnJSFComponents.pdf
    Hope it helps,
    Illu

  • Custom tag for Marquee in JSF

    Hi,
    I am trying to develop a custom tag for Marquee in JSF, my usecase is to display a value from managed bean(Dynamically). please find the code below and guide me where i have made mistake
    regards
    Sandeep
    Component class:
    package customtags;
    import javax.el.ValueExpression;
    import javax.faces.component.UIComponentBase;
    import javax.faces.context.FacesContext;
    public class Marquee extends UIComponentBase {
         public static final String COMPONENT_TYPE = "marqueecomp";
         public static final String RENDERER_TYPE = "marqueeRenderer";
         private Object[] _state = null;
         private String value;
         public String getValue() {
              if (null != this.value) {
                   return this.value;
              ValueExpression _ve = getValueExpression("value");
              return (_ve != null) ? (String) _ve.getValue(getFacesContext()
                        .getELContext()) : null;
         public void setValue(String marquee) {
              this.value = marquee;
         public String getFamily() {
              // TODO Auto-generated method stub
              return COMPONENT_TYPE;
    //     public void encodeBegin(FacesContext context) throws IOException {
    //          ResponseWriter writer = context.getResponseWriter();
    //          writer.startElement("marquee", this);
    //          writer.write(getValue());
    //          writer.endElement("marquee");
         public void restoreState(FacesContext context, Object state) {
              this._state = (Object[]) _state;
              super.restoreState(_context, this._state[0]);
              value = (String) this._state[1];
         public Object saveState(FacesContext _context) {
              if (_state == null) {
                   _state = new Object[2];
              state[0] = super.saveState(context);
              _state[1] = value;
              return _state;
    Tag Class:
    package customtags;
    import javax.el.ValueExpression;
    import javax.faces.component.UIComponent;
    import javax.faces.webapp.UIComponentELTag;
    public class MarqueeTag extends UIComponentELTag {
         protected ValueExpression marquee;
         public String getComponentType() {
              // TODO Auto-generated method stub
              return Marquee.COMPONENT_TYPE;
         public String getRendererType() {
              // TODO Auto-generated method stub
              return Marquee.RENDERER_TYPE;
         * protected void setProperties(UIComponent component) {
         * super.setProperties(component); Marquee marqComp = (Marquee) component;
         * if (marquee != null) { marqComp.setValue(marquee); } }
         protected void setProperties(UIComponent component) {
              super.setProperties(component);
              Marquee marqComp = null;
              try {
                   marqComp = (Marquee) component;
              } catch (ClassCastException cce) {
                   throw new IllegalStateException(
                             "Component "
                                       + component.toString()
                                       + " not expected type. Expected: com.foo.Foo. Perhaps you're missing a tag?");
              if (marquee != null) {
                   //marqComp.setValueExpression("value", marquee);
                   marqComp.setValue("fsdfsdfsdfsdfsd");
         * @return the marquee
         public ValueExpression getMarquee() {
              return marquee;
         * @param marquee
         * the marquee to set
         public void setMarquee(ValueExpression marquee) {
              this.marquee = marquee;
    *.tld file*
    <?xml version="1.0" encoding="UTF-8"?>
    <taglib xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
         version="2.1">
         <tlib-version>1.0</tlib-version>
         <short-name>marqueecomp</short-name>
         <uri>http://tags.org/marquee</uri>
         <tag>
              <name>marqueeTag</name>
    <tag-class>customtags.MarqueeTag</tag-class>
    <body-content>empty</body-content>
    <attribute>
    <description><![CDATA[Your description here]]></description>
    <name>id</name>
    <required>false</required>
    <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
    <description><![CDATA[Your description here]]></description>
    <name>value</name>
    </attribute>
         </tag>
    </taglib>
    Renderer class:
    package customtags;
    import java.io.IOException;
    import javax.faces.component.UIComponent;
    import javax.faces.context.FacesContext;
    import javax.faces.context.ResponseWriter;
    import javax.faces.render.Renderer;
    public class MarqueeRenderer extends Renderer {
         public void encodeBegin(final FacesContext facesContext,
    final UIComponent component) throws IOException {
    super.encodeBegin(facesContext, component);
    final ResponseWriter writer = facesContext.getResponseWriter();
    writer.startElement("DIV", component);
    /*String styleClass =
    (String)attributes.get(Shuffler.STYLECLASS_ATTRIBUTE_KEY);
    writer.writeAttribute("class", styleClass, null);*/
    public void encodeEnd(final FacesContext facesContext,
    final UIComponent component) throws IOException {
    final ResponseWriter writer = facesContext.getResponseWriter();
    writer.endElement("DIV");
    in Faces-Config:
    <component>
              <display-name>marqueecomp</display-name>
              <component-type>marqueecomp</component-type>
              <component-class>customtags.Marquee</component-class>
              <component-extension>
    <renderer-type>marqueeRenderer</renderer-type>
    </component-extension>
         </component>
         <render-kit>
    <renderer>
    <component-family>marqueecomp</component-family>
    <renderer-type>marqueeRenderer</renderer-type>
    <renderer-class>customtags.MarqueeRenderer</renderer-class>
    </renderer>
    </render-kit>
    In class path --->marquee.taglib.xml
    <?xml version="1.0"?>
    <!DOCTYPE facelet-taglib PUBLIC
    "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
    "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
    <facelet-taglib>
    <namespace>http://tags.org/marquee</namespace>
    <tag>
    <tag-name>marqueeTag</tag-name>
    <component>
    <component-type>marqueecomp</component-type>
    <renderer-type>marqueeRenderer</renderer-type>
    </component>
    </tag>
    </facelet-taglib>
    *.xhtml file*
    <html xmlns="http://www.w3.org/1999/xhtml"
         xmlns:ui="http://java.sun.com/jsf/facelets"
         xmlns:h="http://java.sun.com/jsf/html"
         xmlns:f="http://java.sun.com/jsf/core" xml:lang="en" lang="en"
         xmlns:a4j="http://richfaces.org/a4j"
         xmlns:rich="http://richfaces.org/rich" xmlns:mycomp="http://tags.org/marquee">
    <head>
    <title>DEBTDOC Home Page</title>
    <meta http-equiv="keywords" content="enter,your,keywords,here" />
    <meta http-equiv="description"
         content="A short description of this page." />
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <link rel="stylesheet" type="text/css" href="../css/common.css"></link>
    <script language="javascript" src="../script/common.js"></script>
    </head>
    <body>
    <f:view>
    <mycomp:marqueeTag value="hello World"></mycomp:marqueeTag>

    There exist the JSTL SQL taglib, but I don't recommend this. It should only be used for quick development and testing. For database connectivity, rather create a data layer with DAO classes which you on its turn just plug in your business layer (with servlets).

  • Custom Tag attribute

    Hi folks,
    I am trying to create a custom tag that accepts a java.util.Locale as a parameter, and for some reason the container is giving me all kinds of attitude. Here's the detail:
    ----from the .tld---
    <tag>
           <name>loadMasthead</name>
           <tag-class>uiTagHandlers.LoadMasthead</tag-class>
           <body-content>empty</body-content>
           <description>Paints the masthead for a given page</description>      
           <attribute>
                <name>locale</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
             <type>java.util.Locale</type>
           </attribute>
      </tag> ---end tld--
    from the jsp-
    <%@ taglib uri="/WEB-INF/simpleUITags.tld" prefix="helper" %>
    <%@ page import="java.util.Locale" %>
    <helper:loadMasthead locale="<%= Locale.US %>" />---end jsp----
    ---from the handler-----
         public int doTagStart() throws JspTagException{
              JspWriter out = pageContext.getOut();
              try{
                   if( locale != null)          
                        out.print( UIHelper.loadMasthead(locale) );
                   else
                        out.print( UIHelper.loadMasthead() );
              }catch( Exception ex ){
                   throw new JspTagException( ex.getMessage() );
         return SKIP_BODY;
         public int doTagEnd() throws JspTagException{
         return SKIP_PAGE;
          * Sets the locale.
          * @param locale The locale to set
         public void setLocale(java.util.Locale locale) {
              this.locale = locale;
    end handler---
    Here's the error I'm getting from the container:
    [8/5/04 12:14:34:704 EDT] 7abbd628 WebGroup E SRVE0026E: [Servlet Error]-[Unable to convert string '<%= Locale.US %>' to class java.util.Locale for attribute locale: java.lang.IllegalArgumentException: Property Editor not registered with the PropertyEditorManager]: org.apache.jasper.JasperException: Unable to convert string '<%= Locale.US %>' to class java.util.Locale for attribute locale: java.lang.IllegalArgumentException: Property Editor not registered with the PropertyEditorManager
         at org.apache.jasper.runtime.JspRuntimeLibrary.getValueFromPropertyEditorManager(JspRuntimeLibrary.java:920)
         at org.apache.jsp._index._jspService(_index.java:84)
         at com.ibm.ws.webcontainer.jsp.runtime.HttpJspBase.service(HttpJspBase.java:89)
    Any ideas what is going on here?
    Thanks in advance,
    Matt

    The taglib always passes a string. The container is supposed to change it to the proper object, but some do not, as it wasn't clear in the original specs (I found various bug reports). My container does not do this properly for taglibs, so I ended up using a bean, which it processed correctly.
    Your container can't figure out how to change the String it receives to the Locale object it's supposed to set the property to.
    I found a similar problem displayed here:
    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4727371
    You'd need to check with your container docs to see if yours is supposed to be able to do the conversion. If not, you'll either need to write it yourself or do what I did and use a bean so it never passes a string to begin with.

  • Integrating a legacy custom tag with facelets webapp

    Hi
    I have an external custom tag ( a handler that had extended javax.servlet.jsp.tagext.TagSupport ). I am trying to use that custom tag in my .xhtml file(mine is facelets webapp). Please see the xhtml content below
    <html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:tGrid="http://java.pershing.com/tGrid">
    <tGrid:gridFields viewname="view1" isDefault="true" fields="Symbol,Quantity,Security Description,Account Type"/>
    </html>
    The problem here, the tag handler class is not getting invoked, i do not get the HTML content from it.
    I understand like we need to add 'taglib.xml' file as below, and register as config files in servlet context param.
    <tag>
    <tag-name>gridFields </tag-name>
    <handler-class>
    xyz.Grid
    </handler-class>
    </tag>
    I have collected the attributes and kept as TagAttribute in Grid handler class..
    But how could i invoke the custom handler class that had implemented TagSupport and start its own life cycle.
    Please help me out.
    Thanks
    -vijay

    Okay. so we cannot use any legacy custom tags and we need to duplicate the code into a new facelets handler class and add into tablig.xml file. is my understanding correct.?
    By the way, JSTL tags like <c:out> <c:if> are being identified by facelets view handler. How this cud have been supported by it?
    Thanks
    -vijay

  • Unable to create a custom tag

    Hi All
    i am trying to make a custom tag in jsp2.0. I have made the java class which override the doTag method. I have created the tld file and put it in the directly WEB-INF FOLDER.I have written a jsp as well which uses this tag and the uri in the jsp mathces the uri in the tld file. Then it gives me the error message that unable to find the tld file.
    then i made entry in the web.xml as well but now it is giving me an error:
    JSPG0227E: Exception caught while translating /UseCustom.jsp: /UseCustom.jsp(19,1) --> JSPG0009E: Unable to load tag handler class com.hcl.taghandlers
    I am using jstl 1.1 and jsp2.0 and the IBM Rational editor.
    please help as soon as possible.
    thanks in advance!!!!!!!!

    There was a very minute syntax mistake in the web.xml.
    now it is working fine.
    By the thanks to all those who devoted some time to think over it.

  • IOException when flush is called from a custom tag

    Thanks is advance for the help. I've encountered an oddity in OC4J 10.1.3 Standalone using java 1.5 the 2.4 servlet spec and struts 1.1 and I'm wondering how to resolve it. In our current application we use custom tags to define certain fields. Every tag in our web front end does the same thing.
    <pre>
    JspWriter writer = pageContext.getOut();
    writer.print(sb.toString());
    writer.flush();
    </pre>
    I would understand if the tag was calling a commit then flush and then trying to write to the buffer again. That should raise this exception. We have tags that do the same thing without issue, But some others fail. This is the stack trace we see in the logs.
    <pre>
    WARN - SpecialReviewTag.doStartTag() IOException:
    java.io.IOException: InValid to flush BodyContent: no backing stream behind it
    at com.evermind.server.http.EvermindBodyContent.flush(EvermindBodyContent.java:213)
    at xxx.xxxx.xxxxx.xxxxxx.receiving.struts.tag.SpecialReviewTag.doStartTag(SpecialReviewTag.java:198)
    at receiving.item__receipt__items._jspService(_item__receipt__items.java:897)
    at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:59)
    at oracle.jsp.runtimev2.JspPageTable.compileAndServe(JspPageTable.java:724)
    at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:414)
    at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:594)
    at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:518)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    </pre>
    Here is where the oddity comes into play. The page still renders all the needed information for the user. The problem lies with this exception being flooded into our production logs.
    This is the web.xml file being used to define our .jsp configuration
    <pre>
    <jsp-property-group>
    <display-name>Ignore EL</display-name>
    <url-pattern>*.jsp</url-pattern>
    <el-ignored>true</el-ignored>
    <scripting-invalid>false</scripting-invalid>
    <is-xml>false</is-xml>
    </jsp-property-group>
    </pre>
    One other not these tags worked fine in the OC4J 10.1.2 Container this happened after the conversion to OC4J 10.1.3
    Thanks alot for the help,
    Charles
    Edited by: CharMow on Feb 11, 2009 5:14 AM

    Hi,
    I am also getting the same error, when we move to OC4J 10.1.3.
    If you find any solution for this please let me know, Thanks in advance.
    Following the stack trace..
    Can't insert page '/main.jsp' : InValid to flush BodyContent: no backing stream behind it java.io.IOException: InValid to flush BodyContent: no backing stream behind it at com.evermind.server.http.EvermindBodyContent.flush(EvermindBodyContent.java:213) at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:878) at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:473) at layouts.leftLayout._jspService(_leftLayout.java:126) at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:59) at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:462) at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:594) at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:518) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:713) at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:370) at com.evermind.server.http.ServletRequestDispatcher.unprivileged_forward(ServletRequestDispatcher.java:259) at com.evermind.server.http.ServletRequestDispatcher.access$100(ServletRequestDispatcher.java:51) at com.evermind.server.http.ServletRequestDispatcher$2.oc4jRun(ServletRequestDispatcher.java:193) at oracle.oc4j.security.OC4JSecurity.doPrivileged(OC4JSecurity.java:283) at com.evermind.server.http.ServletRequestDispatcher.forward(ServletRequestDispatcher.java:198) at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069) at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:274) at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455) at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:320) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507) at javax.servlet.http.HttpServlet.service(HttpServlet.java:743) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:713) at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:370) at com.evermind.server.http.ServletRequestDispatcher.unprivileged_forward(ServletRequestDispatcher.java:259) at com.evermind.server.http.ServletRequestDispatcher.access$100(ServletRequestDispatcher.java:51) at com.evermind.server.http.ServletRequestDispatcher$2.oc4jRun(ServletRequestDispatcher.java:193) at oracle.oc4j.security.OC4JSecurity.doPrivileged(OC4JSecurity.java:283) at com.evermind.server.http.ServletRequestDispatcher.forward(ServletRequestDispatcher.java:198) at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069) at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:274) at org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:254) at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:309) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507) at javax.servlet.http.HttpServlet.service(HttpServlet.java:743) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:713) at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:370) at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:871) at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:453) at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:221) at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:122) at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:111) at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260) at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303) at java.lang.Thread.run(Unknown Source)
    Thanks,
    Jam

  • Error Using Custom Tag

    I am trying to use a custom tag but receive an error when I use it on a jsp page.
    I have a tag handler class file, tag library descriptor file, specified the path to the .tld in the web.xml file.
    The error implies that it cannot find the SimpleTag.class file, though I put it in the \webapps\examples\WEB-INF\classes\ directory.
    Here is the error. Does anyone know what else it could be?
    org.apache.jasper.JasperException: Unable to compile class for JSP
    Generated servlet error:
    C:\jakarta-tomcat-4.0.1\work\localhost\examples\jsp\jspVisual\ch10\using_0005ftag$jsp.java:63: Class org.apache.SimpleTag not found.
    SimpleTag_jspx_th_myFirstTag_SimpleTag_0 = new SimpleTag();

    I could not see any obvious mistakes. But what you could try, in order to isolate the problem, is to bypass the web.xml. In other words access the TLD directly by doing this in your JSP
    <%@ taglib uri="/WEB-INF/jsp/tag_library_descriptor.tld" prefix="myFirstTag" %>
    if that does work then move the your TLD out of the jsp folder and into WEB-INF , then try
    <%@ taglib uri="/WEB-INF/tag_library_descriptor.tld" prefix="myFirstTag" %>
    Maybe someone else has better idea.

  • Modifying web.xml for a custom tag

    Hello all, I'm trying to create a custom tag, and I'm having trouble trying to understand some elements of web.xml. Can someone tell me in detail what <taglib-uri> is? I know <taglib-location> is the directory where the .tld file is stored.
    Also, is there anywhere online where I could find out more about the different compinents of web.xml? (I can't find any good websites).
    Thanks a lot.

    <taglib>
         <taglib-uri>/mytags</taglib-uri>
         <taglib-location>/mytags.tld</taglib-location>
    </taglib>That means that your tag libaray definition is located at /root/mytags.tld. Some people put them in the WEB-INF, which would make it /root/WEB-INF/mytags.tld.
    The taglib-uri is how you are going to reference it in your JSP. With the above setup, here is how you would reference in your JSP
    <%@ taglib uri="/mytags" prefix="myTagPrefix" %>
    <myTagPrefix:mySpecialTag/>
    Hope this helps.

  • Error processing CFX custom tag "CFX_iMSMail".

    Hi
    I am testing a CF application and this is the error I get.,
    when I am trying to 'register for a certain event'.
    Error processing CFX custom tag "CFX_iMSMail".
    'The CFX custom tag "CFX_iMSMail" was not found in the custom
    tag database. Please be sure to add custom tags to the database
    before using them. If you have added your tag to the database then
    you should check the spelling of the tag within your template to
    insure that it matches the database entry.'
    Text
    The following are the lines of code in one of my cf pages
    that seem to be responsible for causing the error.
    486 : spooldir="#application.mailPath#/Out/"
    487 : priority="0"
    488 : smtpfrom="#listPart.contactEmail#"
    489 : header_from="#Trim(listPart.contactName)#
    <#Trim(listPart.contactEmail)#>"
    Is there any fix for the CFX custom tag problem or is there
    anything I am missing. I am using CF 7.0 on Windows XP
    thanks in advance

    You must register CFX custom tags in the CF Administrator.
    Until you do, they will not be found by the server. That's what the
    error message is trying to tell you.

  • IllegalStateException using custom tag

    I'm receiving the following exception when trying to use a custom tag we are developing to allow us to provide localized content based on the users browser language/country settings:
         java.lang.IllegalStateException: WEB3025: Cannot reset after response has been committedThe thing is - the tag works perfectly when the page is using JSP includes:
         <jsp:include page="/components/headers/global.jsp" />but we get the exception when using our tag:
         <core:localizedInclude page="/components/headers/global.jsp" />and we make a call to our servlet:
         <jsp:forward page='/servlet/MyServlet' />Here is the line in the custom tag Java code that pulls in the file:
         pageContext.include(localizedPage);Any ideas what we can do to fix this? What are the differences between the <jsp:include> and our <core:LocalizedInclude> in this case?
    Bob

    The pagecontext 's include method flushes the buffer before a call to this method. This means the call to your tag from the jsp should be the first line in your jsp as headers have to be set first before writing any html response.
    Here's the relevant javadoc.
    blah..blah..
    The current JspWriter "out" for this JSP is flushed as a side-effect of this call, prior to processing the include.
    blah..blah..You could try the overloaded pageContext.include("path", false) which according to javadoc
    blah..blah..
    If flush is true, The current JspWriter "out" for this JSP is flushed as a side-effect of this call, prior to processing the include. Otherwise, the JspWriter "out" is not flushed.
    blah..blah..cheers,
    ram.

Maybe you are looking for