You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by cr...@apache.org on 2006/01/06 05:54:49 UTC

svn commit: r366429 - in /struts/shale/trunk/core-library/src/java/org/apache/shale: faces/ShaleViewHandler.java resources/Bundle.properties

Author: craigmcc
Date: Thu Jan  5 20:54:44 2006
New Revision: 366429

URL: http://svn.apache.org/viewcvs?rev=366429&view=rev
Log:
Use VariableResolver instead of creating a value binding to instantiate
ViewController instances.  This avoids problems caused by an implementation
of ViewControllerMapper that might create view identifiers that are not
legal EL variable identifiers.

Also, per suggestion from Laurie Harper on the dev list, explicty catch
and report evaluation exceptions caused by this instantiation, to give
the developer a better shot at diagnosing what happened.

Modified:
    struts/shale/trunk/core-library/src/java/org/apache/shale/faces/ShaleViewHandler.java
    struts/shale/trunk/core-library/src/java/org/apache/shale/resources/Bundle.properties

Modified: struts/shale/trunk/core-library/src/java/org/apache/shale/faces/ShaleViewHandler.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/core-library/src/java/org/apache/shale/faces/ShaleViewHandler.java?rev=366429&r1=366428&r2=366429&view=diff
==============================================================================
--- struts/shale/trunk/core-library/src/java/org/apache/shale/faces/ShaleViewHandler.java (original)
+++ struts/shale/trunk/core-library/src/java/org/apache/shale/faces/ShaleViewHandler.java Thu Jan  5 20:54:44 2006
@@ -26,7 +26,9 @@
 import javax.faces.application.ViewHandler;
 import javax.faces.component.UIViewRoot;
 import javax.faces.context.FacesContext;
+import javax.faces.el.EvaluationException;
 import javax.faces.el.ValueBinding;
+import javax.faces.el.VariableResolver;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -223,11 +225,11 @@
 
         // Retrieve an existing instance, or one created and configured by
         // the managed bean facility
-        ValueBinding vb =
-            context.getApplication().createValueBinding("#{" + viewName + "}");
         ViewController vc = null;
+        VariableResolver vr =
+            context.getApplication().getVariableResolver();
         try {
-            Object vcObject = vb.getValue(context);
+            Object vcObject = vr.resolveVariable(context, viewName);
             if (vcObject == null) {
                 log.warn(messages.getMessage("view.noViewController",
                                              new Object[] { viewId, viewName }));
@@ -237,6 +239,10 @@
         } catch (ClassCastException e) {
             log.warn(messages.getMessage("view.notViewController", 
                                          new Object[] { viewId, viewName }));
+            return;
+        } catch (EvaluationException e) {
+            log.warn(messages.getMessage("view.evalException",
+                                          new Object[] { viewId, viewName }), e);
             return;
         }
 

Modified: struts/shale/trunk/core-library/src/java/org/apache/shale/resources/Bundle.properties
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/core-library/src/java/org/apache/shale/resources/Bundle.properties?rev=366429&r1=366428&r2=366429&view=diff
==============================================================================
--- struts/shale/trunk/core-library/src/java/org/apache/shale/resources/Bundle.properties (original)
+++ struts/shale/trunk/core-library/src/java/org/apache/shale/resources/Bundle.properties Thu Jan  5 20:54:44 2006
@@ -29,6 +29,7 @@
 filter.vcmInstantiate=ViewControllerMapper class {0} instance cannot be instantiated
 
 # org.apache.shale.application.ShaleViewHandler
+view.evalException=Evaluation exception creating a managed bean named {1} for viewId {0}
 view.notViewController=Bean for viewId {0} under name {1} is not a ViewController
 view.noViewController=No ViewController for viewId {0} found under name {1}
 view.noViewControllerMapper=No ViewControllerMapper has been configured for this application



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org