[jboss-cvs] jboss-seam/src/main/org/jboss/seam/core ...
Gavin King
gavin.king at jboss.com
Tue Jun 12 03:09:15 EDT 2007
User: gavin
Date: 07/06/12 03:09:15
Modified: src/main/org/jboss/seam/core Pages.java
Log:
validators and required for page parameters
Revision Changes Path
1.129 +35 -10 jboss-seam/src/main/org/jboss/seam/core/Pages.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Pages.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Pages.java,v
retrieving revision 1.128
retrieving revision 1.129
diff -u -b -r1.128 -r1.129
--- Pages.java 10 Jun 2007 20:18:34 -0000 1.128
+++ Pages.java 12 Jun 2007 07:09:15 -0000 1.129
@@ -22,7 +22,9 @@
import javax.faces.application.FacesMessage.Severity;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
+import javax.faces.convert.ConverterException;
import javax.faces.model.DataModel;
+import javax.faces.validator.ValidatorException;
import javax.servlet.http.HttpServletRequest;
import org.dom4j.DocumentException;
@@ -355,7 +357,8 @@
//that if a login redirect occurs, or if a failure
//occurs while applying to the model, we can still make
//Redirect.captureCurrentView() work.
- storeRequestParameterValuesInViewRoot(facesContext);
+ boolean validationFailed = storeRequestParameterValuesInViewRoot(facesContext);
+ if (validationFailed) Validation.instance().fail();
String viewId = getViewId(facesContext);
for ( Page page: getPageStack(viewId) )
@@ -717,14 +720,17 @@
}
}
- private void storeRequestParameterValuesInViewRoot(FacesContext facesContext)
+ private boolean storeRequestParameterValuesInViewRoot(FacesContext facesContext)
{
String viewId = getViewId(facesContext);
Map<String, String[]> requestParameters = Parameters.getRequestParameters();
+ boolean validationFailed = false;
for ( Page page: getPageStack(viewId) )
{
for ( Param pageParameter: page.getParameters() )
{
+ try
+ {
Object value = pageParameter.getValueFromRequest(facesContext, requestParameters);
if (value==null)
{
@@ -740,7 +746,19 @@
Contexts.getPageContext().set( pageParameter.getName(), value );
}
}
+ catch (ValidatorException ve)
+ {
+ facesContext.addMessage( null, ve.getFacesMessage() );
+ validationFailed = true;
+ }
+ catch (ConverterException ce)
+ {
+ facesContext.addMessage( null, ce.getFacesMessage() );
+ validationFailed = true;
+ }
+ }
}
+ return validationFailed;
}
/**
@@ -1290,6 +1308,13 @@
{
param.setConverterValueExpression(Expressions.instance().createValueExpression(converterExpression));
}
+ param.setValidatorId(element.attributeValue("validatorId"));
+ String validatorExpression = element.attributeValue("validator");
+ if (converterExpression!=null)
+ {
+ param.setValidatorValueExpression(Expressions.instance().createValueExpression(validatorExpression));
+ }
+ param.setRequired( "true".equals( element.attributeValue("required") ) );
return param;
}
More information about the jboss-cvs-commits
mailing list