Hello Simon,

I tried to do the same thing using a Tag file instead of a Tag class. I
created a tag file named TagFileTest.tag and put it in under
/WEB-INF/tags directory with the ff content:

<%@ tag body-content="tagdependent" %>
<jsp:doBody/>

The content of the JSP file is a follows:

<%@ taglib prefix="test" tagdir="/WEB-INF/tags" %>

<test:TagFileTest>
#{'hello earth'}
</test:TagFileTest>

With this setup, the JSP is able to display #{'hello earth'}.
Without the line <%@ tag body-content="tagdependent" %> in the tag file,
the web container will throw the ff exception:

org.apache.jasper.JasperException: /1.jsp(3,2) #{..} is not allowed in
template text

        
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
        
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
        
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:102)
        
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:711)
        org.apache.jasper.compiler.Node$ELExpression.accept(Node.java:940)


But this is for Tag files.

For Tag classes, you need to specify body-content of the Tag class in
your TLD file:

...
<taglib>...</taglib>
<uri>...</uri>
<tag>
<description>Any description</description>
<name>NameToBeUsedInJSP</name>
<tag-class>Fully quantified class name</tag-class>
<body-content>This is your body-content for your tag class</body-content>
</tag>
...


I used tomcat-6.0.16 and Java 1.6.

I hope this helps.

Regards
Karl San Gabriel




Simon Kitching wrote:
> Hi,
>
> This is a jasper/JSP question; I hope this is the right list for this...
>
> I am trying to write a custom JSP tag that can get its content as plain
> text.
>
> Example:
> <of:flowConfig>
>    <flowCall type="example.foo">
>       <param src="#{bean.property}"/>
>    </flowCall>
> </of:flowConfig>
>
> I want to create a tag class for of:flowConfig which just gets the
> embedded xml text without *any* processing applied to it. I have an
> implementation that implements
>    setBodyContent(BodyContent)
> and
>   doApplyAfterBody(...)
> which works fine when the content does not include "#{....}". But when
> it does, I get an exception:
>
> Caused by: org.apache.jasper.JasperException:
> /tripPlanner/plane.jsp(30,31) PWC6228: #{...} not allowed in a template
> text body.
>     at
> org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:49)
>     at
> org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:344)
>     at
> org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:156)
>     at
> org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:718)
>     at org.apache.jasper.compiler.Node$ELExpression.accept(Node.java:916)
>     at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2244)
>     at org.apache.jasper.compiler.Validator.validate(Validator.java:1824)
>     at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:168)
>     at org.apache.jasper.compiler.Compiler.compile(Compiler.java:362)
>     at
> org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:581)
>     at
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:344)
>
> Is there a way to tell jasper not to try to interpret ELExpressions
> within the body of a tag?
>
> Ideally I would like not to change the page, but as a last resort that
> is possible. Using CDATA doesn't work, as that is returned as part of
> the body text. Using xml comments doesn't suppress evaluation of the
> body text. Using jsp <%-- --%> comments suppresses the body-text completely.
>
> Environment:
>   Tomcat 6.0.16
>    java 1.6.0
>   
>
> Thanks,
> Simon
>
>   


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to