BOnjour,

J'ai un formulaire que je n'arrive pas à valider.
aucun validateur tomahawk ne fonctionne correctement (ni <t:validateEmail ../> ni <t:validateEqual../>)
En plus, j'ai écrit un validateur personnalisé pour tester si la valeur du login existe dans la base et à chaque fois il me sort une erreur.

ci joint le code source ainsi que les erreurs:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
36
37
38
39
40
41
42
43
44
45
46
47
48
<h:outputLabel for="emailContact" value="#{labelText.emailContact}"/>
                <h:inputText id="emailContact" value="#{organismeForm.emailContact}" required="true">
                	<t:validateEmail detailMessage="#{labelText.erreurEmail}"/>
                </h:inputText>
                <rich:message for="emailContact">
                    <f:facet name="passedMarker">
                        <h:graphicImage  value="/images/passed.gif" /> 
                    </f:facet>
                    <f:facet name="errorMarker">
                        <h:graphicImage value="/images/error.gif" />   
                    </f:facet>
                </rich:message>
 
<h:outputLabel for="login" value="#{labelText.login}"/>
                <h:inputText id="login" value="#{organismeForm.login}" required="true" validator="#{organismeForm.loginCheck}"/>
                <rich:message for="login">
                    <f:facet name="passedMarker">
                        <h:graphicImage  value="/images/passed.gif" /> 
                    </f:facet>
                    <f:facet name="errorMarker">
                        <h:graphicImage value="/images/error.gif" />   
                    </f:facet>
                </rich:message>
 
                <h:outputLabel for="passwd" value="#{labelText.passwd}"/>
                <h:inputText id="passwd" value="#{organismeForm.passwd}" required="true"/>
                <rich:message for="passwd">
                    <f:facet name="passedMarker">
                        <h:graphicImage  value="/images/passed.gif" /> 
                    </f:facet>
                    <f:facet name="errorMarker">
                        <h:graphicImage value="/images/error.gif" />   
                    </f:facet>
                </rich:message>
 
                <h:outputLabel for="passwdConfirm" value="#{labelText.passwdConfirm}"/>
                <h:inputText id="passwdConfirm" value="#{organismeForm.passwdConfirm}" required="true">
                <t:validateEqual for="passwd"
                    message="#{labelText.equalError}"/>
                </h:inputText>
                <rich:message for="passwdConfirm">
                    <f:facet name="passedMarker">
                        <h:graphicImage  value="/images/passed.gif" /> 
                    </f:facet>
                    <f:facet name="errorMarker">
                        <h:graphicImage value="/images/error.gif" />   
                    </f:facet>
                </rich:message>
Lors de la validation du formulaire avec une valeur "azerty" au niveau du champ mail, richfaces valide le champ. Sans richfaces, la validation est correcte.

Concernant, la validation du login, j'ai l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
36
37
38
39
40
41
42
- Stack Trace
 
javax.faces.FacesException: Exception while validating component with path : {Component-Path : [Class: org.ajax4jsf.component.AjaxViewRoot,ViewId: /org_inscr.jsp][Class: org.richfaces.component.html.HtmlPanel,Id: j_id_jsp_57315880_1][Class: javax.faces.component.html.HtmlForm,Id: form1][Class: javax.faces.component.html.HtmlPanelGrid,Id: j_id_jsp_57315880_4][Class: javax.faces.component.html.HtmlInputText,Id: login]}
	at javax.faces.component.UIInput.validate(UIInput.java:346)
	at javax.faces.component.UIInput.processValidators(UIInput.java:144)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:658)
	at javax.faces.component.UIForm.processValidators(UIForm.java:74)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:658)
	at org.ajax4jsf.component.AjaxViewRoot$3.invokeContextCallback(AjaxViewRoot.java:434)
	at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:234)
	at org.ajax4jsf.component.AjaxViewRoot.processValidators(AjaxViewRoot.java:450)
	at org.apache.myfaces.lifecycle.ProcessValidationsExecutor.execute(ProcessValidationsExecutor.java:32)
	at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:103)
	at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:148)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:147)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:276)
	at org.ajax4jsf.Filter.doFilter(Filter.java:175)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.jasper.el.JspMethodNotFoundException: /org_inscr.jsp(164,16) '#{organismeForm.loginCheck}' Method not found: org.proforma.bean.OrganismeForm@327473.loginCheck(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)
	at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:71)
	at javax.faces.validator.MethodExpressionValidator.validate(MethodExpressionValidator.java:54)
	at javax.faces.component._ComponentUtils.callValidators(_ComponentUtils.java:156)
	at javax.faces.component.UIInput.validateValue(UIInput.java:288)
	at javax.faces.component.UIInput.validate(UIInput.java:332)
	... 31 more
Le code du bean:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
package org.proforma.bean;
 
import javax.faces.context.FacesContext;
import javax.faces.application.FacesMessage;
import javax.faces.validator.ValidatorException;
import javax.faces.component.UIComponent;
import java.sql.*;
 
public class OrganismeForm {
.....
 
 public void loginCheck(FacesContext context, UIComponent component, Object value) throws ValidatorException
    {
    	System.out.println("Test LoginCheck()");
    	DBHandler dbHandler = new DBHandler();
    	dbHandler.setQueryString("SELECT login FROM organisme WHERE login = ?");
    	ResultSet rs = dbHandler.lookup(value.toString());
    	 try {
    	  if(rs.next())
    	  {
    		FacesMessage message = org.proforma.util.Messages.getMessage("org.proforma.ressource.bundle", "loginExist", null);
			message.setSeverity(FacesMessage.SEVERITY_ERROR);
			throw new ValidatorException(message);
    	  }
    	 } 
    	 catch (SQLException sqle) {
		    sqle.printStackTrace();
    	 }
 
    }  
}
Merci de votre aide