[richfaces][tomahawk]Erreur de validation
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:
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:
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:
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