[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