ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
1297
1297
EMPFEHLEN
-
06.10.09 14:24 #1
- Registriert seit
- Aug 2009
- Beiträge
- 28
Heyho!
Seit gestern versuche ich mich nun daran, eigene Komponenten für jsf 1.2 zu entwerfen. Es gibt zwar wieder ein paar Tutorials, aber die sind meißt einfach nicht detailiert genug!
Beim Seitenaufruf mit der eigenenen Komponente beomm ich dann folgende Fehlermeldung:
org.apache.jasper.JasperException - Unable to load tag handler class "wut.klumpen.outputCrapUITag" for tag "wut:outputCrap"
Die Componentclass outputCrapUIC.java:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
package wut.klumpen.components; import java.io.IOException; import javax.faces.component.UIComponentBase; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; public class outputCrapUIC extends UIComponentBase { public void encodeBegin(FacesContext fc) throws IOException { ResponseWriter writer = fc.getResponseWriter(); String msg = (String) getAttributes().get("msg"); writer.startElement("h3", this); if(msg != null) writer.writeText(msg, "msg"); else writer.writeText("Hmm, dein msg war wohl null! Schade eigentlich!", null); writer.endElement("h3"); writer.startElement("p", this); writer.writeText("Dieser Text wird aus einer customcomponent generiert!", null); writer.endElement("p"); } @Override public String getFamily() { return "wut.klumpen.components.outputCrapUIC"; } }
Die Tag-class ouputCrapUITag:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
package wut.klumpen.components; import javax.faces.component.UIComponent; import javax.faces.webapp.UIComponentELTag; public class outputCrapUITag extends UIComponentELTag { public String msg = null; @Override public String getComponentType(){return "wut.klumpen.components.outputCrap";} @Override public String getRendererType(){return null;} @SuppressWarnings("unchecked") protected void setProperties(UIComponent comp) { super.setProperties(comp); comp.getAttributes().put("msg", msg); } public void release() { super.release(); this.msg = null; } public void setMsg(String msg) { this.msg = msg; } }
Die .TLD:
Code xml:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
<?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"> <description>Meine Custom Components</description> <tlib-version>1.0</tlib-version> <short-name>wut</short-name> <uri>http://wutklump.en/custom</uri> <tag> <name>outputCrap</name> <tag-class>wut.klumpen.outputCrapUITag</tag-class> <body-content>empty</body-content> <attribute> <name>binding</name> </attribute> <attribute> <name>id</name> </attribute> <attribute> <name>rendered</name> </attribute> <attribute> <name>msg</name> </attribute> </tag> </taglib>
und in der Faces-Config wirds so gemappt:
Code :1 2 3 4
<component> <component-type>wut.klumpen.components.outputCrap</component-type> <component-class>wut.klumpen.components.outputCrapUIC</component-class> </component>
und wenn ich nun
<wut:outputCrap msg="Hell World!"/>
in meiner jsp schreibe bekomm ich diese Fehlermeldung:
org.apache.jasper.JasperException - Unable to load tag handler class "wut.klumpen.outputCrapUITag" for tag "wut:outputCrap"
Jmd ne Idee?
€: die .tld und die beiden outputCrap-classes liegen im web-inf/classes/wut/klumpen/componentsGeändert von Wutklumpen (06.10.09 um 16:08 Uhr) Grund: weil
-
07.10.09 09:49 #2
- Registriert seit
- Aug 2009
- Beiträge
- 28
Hmm..., noch niemand eigene Komponenten entwickelt? Ich denk das is die große Stärke von JSF!?
So wie ich das bis jetzt mitbekommen habe, sind die benötigten Dateien ja alle von einander Abhängig:
Tag-Handler:
Im Tag-Handler muss die getComponentType()-Methode den exakten Pfad zur Komponenten-Klasse inklusive Packages zurückgeben, in meinem Fall sollte das hiermit getan sein:
Code :1
return "wut.klumpen.components.outputCrapUIC";
Das selbe gilt für die getRenderType()-Methode, falls man einen Renderer benötigt!(oder brauch man in jedem Fall einen Renderer?Kein default?)
Die Attribute im Tag-Handler brauchen getter u. setter, auch erledigt.
-------------------
Taglib Descriptor .TLD:
Hier gibts noch so paar kleine ungereimtheiten, zB dachte ich, das die Url im uri-tag den String angibt, mit dem man die ...ich nenns mal Komponenten-Bibliothek... über <% taglib uri="%%%URI%%%" refix="bla"> in die .jsp einbindet! Ich muss hingegen den absoluten pfad der .tld benutzen!
Egal.., wichtiger scheint auf jeden Fall das tag-Tag.o0O(ein tag-Tag, na ganz prima...):
Code :1 2 3 4 5
<tag> <name>outputCrap</name> <tag-class>wut.klumpen.outputCrapUITag</tag-class> /*snip*/ </tag>
<name> steht m.E. für den letztendlichen Komponentennamen, also <prefix:name>
<tag-class> muss den Pfad zur Tag-Handler-Klasse inklusive Packages beinhalten!
------------------
faces-config.xml:
<component-type>: ich hab nich den blassesten schimmer! Ich versuch mich ja an zB der Tomahawk.jar zu orientieren, aber das hilft auch nich weiter.Code :1 2 3 4
<component> <component-type>wut.klumpen.components.outputCrap</component-type> <component-class>wut.klumpen.components.outputCrapUIC</component-class> </component>
<component-class>: Pfad inklusive packages zur Komponentenklasse
----------------
Und zuletzt noch die Komponentenklasse:
was in die getFamily-Methode rein muss/soll/kann, bin ich mir auch nich sicher!
----------------
Kann mir irgendjemand diese Aussagen bestätigen oder eben berichtigen? Das wär wirklich super!
Danke!
-
07.10.09 12:03 #3
- Registriert seit
- Aug 2009
- Beiträge
- 28
Und wenn man der Fehlermeldung auch nur mal ein Deut Aufmerksamkeit zukommen lassen würde, hätte man ganz schnell gemerkt, das in der TLD beim tag-class ein Stück Pfad fehlt -.-
Denn es müsste in meinem Fall wut.klumpen.components.outputCrapUITag heißen!
AHRG! *in Tisch beiß*
Ähnliche Themen
-
Pfadprobleme bei Extensions - Unable to load dynamic library
Von Alex Duschek im Forum PHPAntworten: 7Letzter Beitrag: 29.06.10, 15:10 -
[JSF 1.2] Custom Components
Von Firestorm696 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 0Letzter Beitrag: 06.05.10, 09:02 -
Validation: Unable to load a schema with target namespace
Von lolilol im Forum XML TechnologienAntworten: 0Letzter Beitrag: 18.08.08, 21:14 -
AXIS2 und AOP Fehler:Unable to load Bytecode..
Von navino im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 2Letzter Beitrag: 17.03.08, 07:48 -
mysql und iis - Unable to load dynamic library
Von Briefkasten im Forum PHPAntworten: 3Letzter Beitrag: 25.08.06, 08:08





Zitieren
Login





