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