2010-12-30 3 views
0

Ich versuche, eine benutzerdefinierte Composite-Komponente taglib in meinem Büro zu erstellen, aber ich bekomme ein seltsames Problem mit EL. Es scheint, dass Ausdrücke wie # {cc.attrs. [Var]} bereits als leer aufgelöst werden.JSF2.0: EL sind nicht aufgelöst in einer Composite Component taglib

Ich versuche, meine Taglib in einem Glas zu erstellen. In meinem Glas Ich habe meine Dateien wie folgt bestellt:

| _/

..... | _ META-INF

.......... | _ COMPO. taglib.xml

.......... | _ Ressourcen

............... | _ Komponenten

.... ................ | _ hello.xhtml

compo.taglib.xml enthält:

<facelet-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-facelettaglibrary_2_0.xsd" 
version="2.0"> 

<namespace>http://www.example.com/jsf/compo</namespace> 
<composite-library-name>compo</composite-library-name> 
<tag> 
<tag-name>hello</tag-name> 
<source>./components/hello.xhtml</source> 
</tag> 
</facelet-taglib> 

hello.xhtml enthält:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
xmlns:composite="http://java.sun.com/jsf/composite"> 

<composite:interface name="hello" displayName="hello"> 
<composite:attribute name="name" required="true" type="String"/> 
</composite:interface> 

<composite:implementation > 
hello #{cc.attrs.name}! 
</composite:implementation> 

</html> 

Mein Web-Projekt enthält in WEB-INF lib mein taglib als Glas, JSF-impl.jar und JSF -api.jar (von Mojarra) meine Seite ist einfach, dass:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
xmlns:comp="http://www.example.com/jsf/compo" > 
<body> 
<comp:hello name="John"></comp:hello> 
</body> 
</html> 

Bei Rendering ich sehe "Hallo!" aber nicht "Hallo John!". Attribute Werte scheint irgendwo verloren zu sein. Ich versuche dieses Beispiel auf Tomcat 6.0.29 und Websphere 7.

Ich habe etwas falsch gemacht?

Antwort

1

Haben Sie Ihr Steuerelement in der Webanwendung und nicht in der Taglib (JAR-Datei) getestet? Ich kann nur raten, aber ich denke, Ihr Attribut wird nicht angezeigt, weil Sie es Name benannt haben. In einigen Fällen Attribut "name" wird gerade von JSF (: Attribut oder f: param oder sogar ui: param Anwendungen Attribut Name zum Beispiel in f) verwendet. Versuchen Sie, den Attributnamen durch oder das Wort zu ersetzen.

Sie müssen suchen und prüfen, ob der Attributname verfügbar ist.

1

Ja, dieser Fall erscheint auch bei anderen Attributen. Ich habe versucht, mit der Komponente in Web-Anwendung und Problem erscheint nicht. Ich habe auch versucht, mit der Komponente in einem Jar mit Standard-Namespace: Problem wird nicht angezeigt. Ich denke, es gibt einen Fehler bei der Verwendung von Composite-Komponenten in einem Jar mit benutzerdefinierten Namespace.

Verwandte Themen