[jboss-cvs] jboss-seam/src/main/org/jboss/seam/navigation ...
Gavin King
gavin.king at jboss.com
Sun Jun 24 18:24:51 EDT 2007
User: gavin
Date: 07/06/24 18:24:51
Modified: src/main/org/jboss/seam/navigation Param.java
Log:
redesign model-based validation, according to advice of Jacob
JBSEAM-1593
Revision Changes Path
1.5 +33 -2 jboss-seam/src/main/org/jboss/seam/navigation/Param.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Param.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/navigation/Param.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- Param.java 21 Jun 2007 05:27:29 -0000 1.4
+++ Param.java 24 Jun 2007 22:24:51 -0000 1.5
@@ -3,14 +3,18 @@
import java.util.Map;
import java.util.ResourceBundle;
+import javax.el.ELContext;
+import javax.el.ELException;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;
+import org.hibernate.validator.InvalidValue;
+import org.jboss.seam.core.Validators;
import org.jboss.seam.core.Expressions.ValueExpression;
-import org.jboss.seam.faces.FacesExpressions;
+import org.jboss.seam.faces.FacesMessages;
/**
* Metadata for a <param/> in pages.xml
@@ -201,12 +205,39 @@
if (valueExpression!=null)
{
- FacesExpressions.instance().validate( valueExpression.getExpressionString(), value );
+ //TODO: note that this code is duplicated from ModelValidator!!
+ ELContext elContext = facesContext.getELContext();
+ InvalidValue[] invalidValues;
+ try
+ {
+ invalidValues = Validators.instance().validate( valueExpression.toUnifiedValueExpression(), elContext, value );
+ }
+ catch (ELException ele)
+ {
+ Throwable cause = ele.getCause();
+ if (cause==null) cause = ele;
+ throw new ValidatorException( createMessage(cause), cause );
+ }
+
+ if ( invalidValues.length>0 )
+ {
+ throw new ValidatorException( createMessage(invalidValues) );
+ }
}
return value;
}
+ private FacesMessage createMessage(InvalidValue[] invalidValues)
+ {
+ return FacesMessages.createFacesMessage( FacesMessage.SEVERITY_ERROR, invalidValues[0].getMessage() );
+ }
+
+ private FacesMessage createMessage(Throwable cause)
+ {
+ return new FacesMessage(FacesMessage.SEVERITY_ERROR, "model validation failed:" + cause, null);
+ }
+
private void addRequiredMessage(FacesContext facesContext)
{
String bundleName = facesContext.getApplication().getMessageBundle();
More information about the jboss-cvs-commits
mailing list