Apache MyFaces ExtVal

mad-din

Bekanntes Mitglied
Hi Leute,

hat von euch schonmal jemand mit Apache MyFaces ExtVal (Apache Myfaces Extensions Validator - Apache MyFaces Extensions Validator) gearbeitet? Ich versuch mich gerade da reinzuarbeiten. Ich hab mir dazu eine simple Webapplikation mit einer DAO (Person.java), einer Bean (PersonBean.java) und einer JSF-Seite (person.jsp) erstellt. Sinn soll sein eine neue Person anzulegen und die Validierung aus den Annotations der DAO zu verwenden.

Allerdings funktioniert es einfach nicht ;) Warum weiß ich noch nicht, es gibt einfach keine Fehlermeldung. Es sieht so aus als ob die Verlinkung von ExtVal fehlt. Auf den offiziellen Seiten gibt es PDF, eine Art StarterGuide, aber daraus werde ich auch nicht schlau. Die ganzen Tutorials, die ich finde, sind alle nur eine Kopie des PDFs.

Ich versuch die WAR-Datei mal noch anzuhängen. Die Anwendung besteht im Grunde aus Hibernate, der SUN JSF Implementation 1.2 und Myfaces ExtVal.

Vielleicht hat ja einer von euch einen Tipp!

Viele Grüße
Martin
 
P

Peter-S

Gast
Hallo Martin,

funktioniert deine Demo schon?
Du musst eigentlich nur Value-Bindings (wie immer bei den Input-Komponenten) verwenden und dann die Annotations.

Beispiel:
<h:inputText value="#{person.firstName}"/>

public class Person
{
@Required
private String firstName;

//+ Getter-/Setter-Methoden
}

Falls du noch Infos brauchst, dann sind hier ein paar Links:
Extensions/Validator - Myfaces Wiki
https://svn.apache.org/repos/asf/myfaces/extensions/validator/trunk/examples/
os890 - Project Hosting on Google Code
jsfatwork - Revision 56: /fullstack-2010/trunk

Fragen werden am schnellsten direkt auf der MyFaces Mailing-Liste beantwortet - siehe:
Apache Myfaces Extensions Validator - Project Mailing Lists

Gruß,
Peter
 

mad-din

Bekanntes Mitglied
Hi,

ja die Demo und die Anwendung laufen schon, es fehlte im Grunde nur ein Eintrag in der web.xml mit folgendem Context-Param:

Java:
<context-param>
  <param-name>org.apache.myfaces.VALIDATE</param-name>
  <param-value>true</param-value>
</context-param>

Was allerdings noch komisch ist, ist die Tatsache, dass jedes DAO als Managed-Bean angelegt werden muss. Ich hab z.B. eine DAO "Person", die mit JPA-Annotations versehen ist. Dann gibt es eine Bean PersonBean, die als ManagedBean das Anlegen und Ändern einer Person übernehmen soll. Die DAO muss allerdings ebenfalls als ManagedBean angelegt werden, damit die Validierung funktioniert. Grundsätzlich kein Problem, aber wieso muss das so sein?

Viele Grüße
Martin
 
P

Peter-S

Gast
Hallo Martin,

dieser web.xml Eintrag ist nicht erforderlich und hat nichts mit ExtVal zu tun (siehe Demo Apps. bspw. auf os890).

Du kannst folgendes machen:

<h:inputText value="#{personPage.person.firstName}"/>

In diesem Fall ist die Klasse Person kein Managed-Bean.

Wenn du dir die Links ansiehst, dann wirst du einige Bsp. finden, die ähnliche bis gleiche Konstellationen zeigen.

Oder du verwendest das neue @ConstraintSource Feature vom aktuellen trunk.
(Allerdings fehlt noch eine offizielle Doku dafür - im Wiki gibts jedoch einen "Drafts"-Bereich - ganz unten auf Extensions/Validator/DevDoc - Myfaces Wiki)

Gruß,
Peter
 

mad-din

Bekanntes Mitglied
Hi Peter,

<h:inputText value="#{personPage.person.firstName}"/>

In diesem Fall ist die Klasse Person kein Managed-Bean.

soweit so gut, lege ich allerdings die Klasse Person nicht als Managed-Bean an funktioniert die ganze Validierung nicht. Im Porjekt os890 gibt es eine Demo und zwar die allererste "demo_000" und dort ist es genau so, denn dort ist die Klasse Person als ManagedBean in der faces-config.xml angelegt.

Wie kriege ich es dann hin, dass ich nicht jedes DAO als ManagedBean anlegen muss?

Viele Grüße
Martin
 
P

Peter-S

Gast
Hallo Martin,

ExtVal verarbeitet nur die Property selbst und nicht die Ebenen zwischen dem 1. Bean und der Property.

Du kannst dir
asf - Revision 946472: /myfaces/extensions/validator/trunk/examples/hello_world
ansehen.

Dort hast du ein Managed-Bean mit dem Namen helloWorld und in der Seite hast du dann:
<h:inputText value="#{helloWorld.person.firstName}"/>

Die Person-Klasse ist kein Managed-Bean.
ExtVal bekommt in diesem Fall das helloWorld Bean und untersucht die Property firstName.
JSF selbst benötigt eine Getter-Methode für Person (siehe Beispiel), damit dieser Pfad aufgelöst werden kann.

Es sieht so aus als hättest du ein grundsätzliches Problem in deiner Applikation.
Am einfachsten wäre es, wenn du eine Demo App. bspw. auf Basis von demo_000 erstellst und diese Demo dem Projekt-Team zur Verfügung stellst (bitte nur einen Link an Mailing Listen schicken und nicht die Dateien selbst). Sie können dir sicher anhand dieses Beispiels deine Fragen beantworten.

Gruß,
Peter
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I vTiger Astersik Connector: NO JSP Support for , did not find org.apache.jasper.servlet.JspServlet Web Tier 0
I SessionContext CDI und Apache Shiro Web Tier 0
B JSF Apache Shiro mit JSF 2 Web Tier 3
Spin Shiro Apache Security Framework Web Tier 3
H Servlet Apache Geronimo: Servlet nicht erreichbar Web Tier 2
N JSP org.apache.tomcat cannot be resolved to a type InstanceManager cannot be resolved to a type Web Tier 4
F.S.WhiTeY JSF:org.apache.jasper.JasperException Problem Web Tier 2
F ADF Faces & Apache Trinidad Web Tier 5
C Apache-Tomcat Web Tier 13
T html login und apache client Web Tier 13
W JSF MyFaces Tomahawk Probleme Web Tier 4
ruutaiokwu myfaces macht unbekannte zeichen in output rein... Web Tier 7
S "An error occured while initializing MyFaces" Web Tier 2
F No Factories configured for this Application - Myfaces mit Tomcat Web Tier 1
A MyFaces 1.2.6 EL? Web Tier 4
J Ajax in MyFaces? Web Tier 6
G MyFaces: HTML Ausgabe Code steuern Web Tier 8
G MyFaces PanelTab Komponente: Tabs in mehrern Zeilen möglich? Web Tier 3
A JSTL Tags funktionieren nicht in Facelets/MyFaces Web Tier 3
Y myFaces - Scope und t:saveState Erfahrungen Web Tier 9
Y myFaces - SelectItem Web Tier 39
Y myFaces 1.2 - kein ServletContext ? Web Tier 9

Ähnliche Java Themen

Neue Themen


Oben