Sorry erratum,

The namespace used by facelets jstl is

http://java.sun.com/jstl/core
and not

http://java.sun.com/jsp/jstl/core
that was the problem. Too much noise for nothing.

Regards,
Zied


2007/9/27, Zied Hamdi <[EMAIL PROTECTED]>:
>
> Hi again,
>
> So to answer to people who could encounter the same problem as me:
> facelets is bundled with its ows JSTL implementation (you were right Volker
> ;-) that has nothing to do with the standard one except that it copies its
> syntax:
> https://facelets.dev.java.net/nonav/docs/dev/docbook.html#taglib-available-jstl
> .
>
> The biggest probem is that where your <c:if goes when it's called isn't
> easy to follow at all. I realized it doesn't go into *
> com.sun.facelets.tag.jstl.core.* *IfHandler* (added a breakpoint). A big
> mistake (in my opinion) is that facelets gives his implementation the same
> namespace as the one for standard JSTL: 
> xmlns:c=http://java.sun.com/jsp/jstl/core
> This is a problem because the objective of namespaces is to distinguish
> between implementations of different types, it is amplified because wen you
> have a jstl jar in you classpath, the code is redirected to it (at least
> that's what happened to me)
>
> So even though I removed all my jars from my app jstl.jar (and
> standard.jar) files, JBoss has in its default libs jstl.jar that he puts
> for all applications. \JBoss\server\*default* 
> \deploy\jboss-web.deployer\(that is copied to JBoss\server\default\tmp\deploy)
>
> Even after removing this jar, my calls didn't redirect to *IfHandler*(surely 
> another perverse jstl implementation somewhere) so to be radical I
> changed the namespace like this: I copied the init code in *JstlCoreLibrary
> *into my own library:
>
>
> package fr.into.common.functions;
>
>
>
> import java.lang.reflect.Method;
>
> import java.lang.reflect.Modifier;
>
>
>
> import com.sun.facelets.tag.AbstractTagLibrary;
>
> import com.sun.facelets.tag.jstl.core.CatchHandler ;
>
> import com.sun.facelets.tag.jstl.core.ChooseHandler ;
>
> import com.sun.facelets.tag.jstl.core.ChooseOtherwiseHandler ;
>
> import com.sun.facelets.tag.jstl.core.ChooseWhenHandler ;
>
> import com.sun.facelets.tag.jstl.core.ForEachHandler ;
>
> import com.sun.facelets.tag.jstl.core.IfHandler;
>
> import com.sun.facelets.tag.jstl.core.SetHandler;
>
>
>
> public class CommonFunctionsTagLibrary extends AbstractTagLibrary {
>
>       public static final String
>             NAMESPACE    = "http://www.into-i.fr/facelets/common/functions
> ";
>
>       public static final CommonFunctionsTagLibrary   INSTANCE    = new
> CommonFunctionsTagLibrary();
>
>
>
>       public CommonFunctionsTagLibrary() {
>
>             super( NAMESPACE );
>
>
>
>             try {
>
>                   Method[] methods = CommonFunctions.class.getMethods();
>
>
>
>                   for( int i = 0; i < methods.length; i++ ) {
>
>                         if( Modifier.isStatic( methods[i].getModifiers() )
> ) {
>
>                               addFunction( methods[i].getName(),
> methods[i] );
>
>                         }
>
>                   }
>
>             } catch( Exception e ) {
>
>                   throw new RuntimeException( e );
>
>             }
>
>             this.addTagHandler( "if", IfHandler.class );
>
>
>
>             this.addTagHandler( "forEach", ForEachHandler.class );
>
>
>
>             this.addTagHandler( "catch", CatchHandler.class );
>
>
>
>             this.addTagHandler( "choose", ChooseHandler.class );
>
>
>
>             this.addTagHandler( "when", ChooseWhenHandler.class );
>
>
>
>             this.addTagHandler( "otherwise", ChooseOtherwiseHandler.class);
>
>
>
>             this.addTagHandler( "set", SetHandler.class );
>
>       }
>
>
>
> }
>
> see this link for creating your own libs: 
> http://www.ibm.com/developerworks/java/library/j-facelets2.html
>
>
> So now I don't use the standard namespace anymore but it works.
>
> Hope it will help someone :-)
>
> Regards,
> Zied
>
>
> 2007/9/26, Zied Hamdi <[EMAIL PROTECTED]>:
> >
> > Hi Volker,
> >
> > JSTL can be used in facelets: I found that in an article 
> > http://www.ibm.com/developerworks/java/library/j-facelets/
> >
> >
> > In the article, the snippet
> > <c:if test="${empty label}">
> >     <c:set var="label" value="${fieldName}" />
> > </c:if>
> >  comes very handy. The rendered attribute can't do the work anymore in
> > such cases.
> >
> > I didn't see Bernd in posts these last days, maybe he's in holidays.
> >
> > Regards,
> > Zied
> >
> >
> > 2007/9/26, Volker Weber <[EMAIL PROTECTED]>:
> > >
> > > Hi Zied,
> > >
> > > i have no experience with facelets, but afaik jstl is a jsp taglib and
> > > not facelets compatible.
> > >
> > > i never tested tobago with 1.2 maybe bernd knows more.
> > >
> > >
> > > Regards,
> > >    Volker
> > >
> > > 2007/9/26, Zied Hamdi < [EMAIL PROTECTED]>:
> > > > Hi again,
> > > >
> > > > Sorry for spamming, I forgot to say it's possible to do wihout JSTL
> > > playing
> > > > with the rendered attribute or using tc:sheet or tc:forEach. The
> > > question
> > > > is: is tobago still not compatible with JSTL under JSF 1.2?
> > > >
> > > > Regards,
> > > > Zied
> > > >
> > > >
> > > > 2007/9/26, Zied Hamdi < [EMAIL PROTECTED]>:
> > > > >
> > > > > Hi,
> > > > >
> > > > > I'm under JSF 1.2 (RI), Facelets 1.12 and a Tobago nightly 1.0.12of
> > > > yesterday, I'm trying to use JSTL 1.1 but even the simplest example
> > > fails:
> > > > >
> > > > >
> > > > >             < c:if test= "false" >
> > > > >
> > > > >                   < tc:out value ="test" ></tc:out >
> > > > >
> > > > >             </ c:if >
> > > > >
> > > > > prints "test" anyway.
> > > > >
> > > > > Even more strange : when calling
> > > > >
> > > > >
> > > > >             < c:if test=' #{icf:instanceOf( "str", "
> > > java.lang.Long" )}' >
> > > > >
> > > > >                   < tc:out value ="test2" ></tc:out >
> > > > >
> > > > >             </ c:if >Where instanceOf is a function of mine, the
> > > function
> > > > is executed but its result seems to be ignored anyway.
> > > > >
> > > > > The problem is not only with c:if. The tag c:forEach enters the
> > > loop only
> > > > once (when items are numerous) and fills its var argument with null.
> > >
> > > > >
> > > > > Browsing the mailing list I've found a lot of posts talking about
> > > using
> > > > JSTL and some seem to discourage using it with tobago, but some seem
> > > to use
> > > > it without problems.
> > > > >
> > > > > I also have these error logs, that maybe related to the problem:
> > > > >
> > > > >
> > > > > 5:33 :48,375 INFO   [STDOUT] 2007-09-26 15:33 :48,375
> > > > [ http-127.0.0.1-8080-3] ERROR
> > > > org.apache.myfaces.tobago.webapp.TobagoResponseWriterImpl.endElement(242)
> > > > - Element end with name='div' doesn't match with top element on the
> > > > stack='c:if' ( GridLayoutRenderer.java:381 )
> > > > >
> > > > > 15:33 :48,375 INFO   [STDOUT] 2007-09-26 15:33 :48,375
> > > > [http-127.0.0.1-8080-3] ERROR
> > > > org.apache.myfaces.tobago.webapp.TobagoResponseWriterImpl.endElement(242)
> > > > - Element end with name='td' doesn't match with top element on the
> > > > stack='div' ( GridLayoutRenderer.java:382 )
> > > > >
> > > > > 15:33 :48,375 INFO   [STDOUT] 2007-09-26 15:33 :48,375
> > > > [http-127.0.0.1-8080-3] ERROR
> > > > org.apache.myfaces.tobago.webapp.TobagoResponseWriterImpl.endElement(242)
> > > > - Element end with name='tr' doesn't match with top element on the
> > > > stack='td' ( GridLayoutRenderer.java:388 )
> > > > >
> > > > > 15:33 :48,375 INFO   [STDOUT] 2007-09-26 15:33 :48,375
> > > > [http-127.0.0.1-8080-3] ERROR
> > > > org.apache.myfaces.tobago.webapp.TobagoResponseWriterImpl.endElement(242)
> > > > - Element end with name='c:if' doesn't match with top element on the
> > > > stack='div' ( EndElementInstruction.java:39 )
> > > > >
> > > > > 15:33 :48,390 INFO   [STDOUT] 2007-09-26 15:33 :48,390
> > > > [http-127.0.0.1-8080-3] ERROR
> > > > org.apache.myfaces.tobago.webapp.TobagoResponseWriterImpl.endElement(242)
> > > > - Element end with name='div' doesn't match with top element on the
> > > > stack='td' ( GridLayoutRenderer.java:381 )
> > > > >
> > > > > 15:33 :48,390 INFO   [STDOUT] 2007-09-26 15:33 :48,390
> > > > [http-127.0.0.1-8080-3] ERROR
> > > > org.apache.myfaces.tobago.webapp.TobagoResponseWriterImpl.endElement(242)
> > > > - Element end with name='td' doesn't match with top element on the
> > > > stack='tr' ( GridLayoutRenderer.java:382 )
> > > > >
> > > > >
> > > > >
> > > > > Can you please confirm me if it's a bug or if I have to continue
> > > > investigation?
> > > > >
> > > > >
> > > > >
> > > > > Regards,
> > > > >
> > > > > Zied
> > > >
> > > >
> > > >
> > > > --
> > > > Zied Hamdi
> > > > zatreex.sourceforge.net
> > >
> >
> >
> >
> > --
> > Zied Hamdi
> > zatreex.sourceforge.net
> >
>
>
>
> --
> Zied Hamdi
> zatreex.sourceforge.net
>



-- 
Zied Hamdi
zatreex.sourceforge.net

Reply via email to