[jboss-cvs] jboss-seam/src/main/org/jboss/seam/core ...

Gavin King gavin.king at jboss.com
Sat Dec 16 21:39:17 EST 2006


  User: gavin   
  Date: 06/12/16 21:39:17

  Modified:    src/main/org/jboss/seam/core    Exceptions.java
                        Navigator.java Pages.java
  Log:
  params for redirects JBSEAM-180, yay
  
  Revision  Changes    Path
  1.19      +1 -1      jboss-seam/src/main/org/jboss/seam/core/Exceptions.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Exceptions.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Exceptions.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -b -r1.18 -r1.19
  --- Exceptions.java	17 Dec 2006 00:25:14 -0000	1.18
  +++ Exceptions.java	17 Dec 2006 02:39:17 -0000	1.19
  @@ -235,7 +235,7 @@
            addFacesMessage( e, getMessage(e) );
            if ( isEnd(e) ) Conversation.instance().end();
            if ( isRollback(e) ) Transactions.setTransactionRollbackOnly();
  -         redirect( getViewId(e) );
  +         redirect( getViewId(e), null );
            return rethrow(e);
         }
   
  
  
  
  1.2       +4 -2      jboss-seam/src/main/org/jboss/seam/core/Navigator.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Navigator.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Navigator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- Navigator.java	17 Dec 2006 00:25:55 -0000	1.1
  +++ Navigator.java	17 Dec 2006 02:39:17 -0000	1.2
  @@ -1,5 +1,7 @@
   package org.jboss.seam.core;
   
  +import java.util.Map;
  +
   import javax.faces.component.UIViewRoot;
   import javax.faces.context.FacesContext;
   
  @@ -31,14 +33,14 @@
      /**
       * Redirect to the view id.
       */
  -   protected static void redirect(String viewId)
  +   protected static void redirect(String viewId, Map<String, Object> parameters)
      {
         if ( Strings.isEmpty(viewId) )
         {
            viewId = FacesContext.getCurrentInstance().getViewRoot().getViewId();
         }
         if ( log.isDebugEnabled() ) log.debug("redirecting to: " + viewId);
  -      Manager.instance().redirect(viewId);
  +      Manager.instance().redirect(viewId, parameters, true);
      }
      
      /**
  
  
  
  1.62      +54 -28    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.61
  retrieving revision 1.62
  diff -u -b -r1.61 -r1.62
  --- Pages.java	17 Dec 2006 00:25:14 -0000	1.61
  +++ Pages.java	17 Dec 2006 02:39:17 -0000	1.62
  @@ -34,6 +34,7 @@
   import org.jboss.seam.contexts.Contexts;
   import org.jboss.seam.core.Expressions.MethodBinding;
   import org.jboss.seam.core.Expressions.ValueBinding;
  +import org.jboss.seam.core.Page.PageParameter;
   import org.jboss.seam.log.LogProvider;
   import org.jboss.seam.log.Logging;
   import org.jboss.seam.util.DTDEntityResolver;
  @@ -288,11 +289,22 @@
         Element redirect = element.element("redirect");
         if (redirect!=null)
         {
  +         List<Element> children = redirect.elements("param");
  +         final List<PageParameter> pageParameters = new ArrayList<PageParameter>();
  +         for (Element child: children)
  +         {
  +            pageParameters.add( parsePageParameter(child) );
  +         }
            final String viewId = redirect.attributeValue("view-id");
            caze.setResult(new Page.Result() {
               public void navigate(FacesContext context)
               {
  -               redirect(viewId);
  +               Map<String, Object> parameters = new HashMap<String, Object>();
  +               for ( PageParameter pageParameter: pageParameters )
  +               {
  +                  parameters.put( pageParameter.getName(), getParameterValue(context, pageParameter) );
  +               }
  +               redirect(viewId, parameters);
               }
            });
         }
  @@ -637,21 +649,40 @@
            {
               if ( !overridden.contains( pageParameter.getName() ) )
               {
  -               ValueBinding valueBinding = pageParameter.getValueBinding();
  -               if (valueBinding==null)
  -               {
  -                  Object value = Contexts.getPageContext().get( pageParameter.getName() );
  +               Object value = getPageParameterValue(facesContext, pageParameter);
                     if (value!=null) 
                     {
                        parameters.put( pageParameter.getName(), value );
                     }
                  }
  +         }
  +      }
  +      return parameters;
  +   }
  +
  +   private Object getPageParameterValue(FacesContext facesContext, Page.PageParameter pageParameter)
  +   {
  +      ValueBinding valueBinding = pageParameter.getValueBinding();
  +      if (valueBinding==null)
  +      {
  +         return Contexts.getPageContext().get( pageParameter.getName() );
  +      }
                  else
                  {
  -                  Object value = valueBinding.getValue();
  -                  if (value!=null)
  +         return getParameterValue(facesContext, pageParameter);
  +      }
  +   }
  +
  +   private Object getParameterValue(FacesContext facesContext, Page.PageParameter pageParameter)
                     {
  -                     Converter converter;
  +      Object value = pageParameter.getValueBinding().getValue();
  +      if (value==null)
  +      {
  +         return null;
  +      }
  +      else
  +      {
  +         Converter converter = null;
                        try
                        {
                           converter = pageParameter.getConverter();
  @@ -659,18 +690,13 @@
                        catch (RuntimeException re)
                        {
                           //YUCK! due to bad JSF/MyFaces error handling
  -                        continue;
  +            return null;
                        }
  -                     Object convertedValue = converter==null ? 
  +         
  +         return converter==null ? 
                              value : converter.getAsString( facesContext, facesContext.getViewRoot(), value );
  -                     parameters.put( pageParameter.getName(), convertedValue );
  -                  }
                  }
               }
  -         }
  -      }
  -      return parameters;
  -   }
      
      /**
       * Apply any page parameters passed as parameter values to the model.
  
  
  



More information about the jboss-cvs-commits mailing list