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
-
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 -
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 tellIf 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 -
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).
-
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,
MattThe 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
-vijayOkay. 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 -
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 AMHi,
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 -
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 advanceYou 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?
BobThe 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
-
Why can I not get HBO on my apple TV
can we have an easy way to ask a ? and get an answer?
-
Question on 'BYTES' in dba_free_space
I have 11gr2 db. SQL> select sum(bytes)/1024/1024/1024 Gbytes_free 2 from sys.dba_free_space 3 where tablespace_name = 'AI_TS'; GBYTES_FREE 29.328003 we have 29GB free for tablespace AI_TS Let's see what those datafiles in the
-
My task is to migrate an Oracle 11.2.0.2 test database (source database) to 11.2.0.3. The source database hat timezone files (RDBMS DST) version 18 installed. OS ist Windows 2008 R2. I installed the 11.2.0.3 patchset into a separate Oracle Home (targ
-
Change default Windows background during deployment
I have a Windows deployment server up and running and deploying custom Windows 7&8 images which all work fine. I want to be able to change the default Windows background to a custom image during deployment so when a new user is created and logs in lo
-
he iPod isn't restored, gives out an error 1604, I do all as is written on a site, but helps nothing.