You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2009/11/11 01:01:53 UTC
svn commit: r834719 - in /myfaces/core/trunk:
api/src/main/java/javax/faces/component/
impl/src/main/java/org/apache/myfaces/lifecycle/
impl/src/main/java/org/apache/myfaces/view/facelets/
impl/src/main/java/org/apache/myfaces/view/jsp/
Author: lu4242
Date: Wed Nov 11 00:01:53 2009
New Revision: 834719
URL: http://svn.apache.org/viewvc?rev=834719&view=rev
Log:
MYFACES-2368 Update Render Response Phase to new spec
Modified:
myfaces/core/trunk/api/src/main/java/javax/faces/component/UIViewRoot.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RenderResponseExecutor.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewDeclarationLanguage.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/jsp/JspViewDeclarationLanguage.java
Modified: myfaces/core/trunk/api/src/main/java/javax/faces/component/UIViewRoot.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/api/src/main/java/javax/faces/component/UIViewRoot.java?rev=834719&r1=834718&r2=834719&view=diff
==============================================================================
--- myfaces/core/trunk/api/src/main/java/javax/faces/component/UIViewRoot.java (original)
+++ myfaces/core/trunk/api/src/main/java/javax/faces/component/UIViewRoot.java Wed Nov 11 00:01:53 2009
@@ -288,7 +288,7 @@
//prerendering happens, we now publish the prerender view event
//the specs states that the viewroot as source is about to be rendered
//hence we issue the event immediately before publish, if the phase is not skipped
- context.getApplication().publishEvent(context, PreRenderViewEvent.class, this);
+ //context.getApplication().publishEvent(context, PreRenderViewEvent.class, this);
//then the view rendering is about to begin
super.encodeBegin(context);
}
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RenderResponseExecutor.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RenderResponseExecutor.java?rev=834719&r1=834718&r2=834719&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RenderResponseExecutor.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RenderResponseExecutor.java Wed Nov 11 00:01:53 2009
@@ -23,8 +23,11 @@
import javax.faces.FacesException;
import javax.faces.application.Application;
import javax.faces.application.ViewHandler;
+import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseId;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.view.ViewDeclarationLanguage;
/**
* Implements the lifecycle as described in Spec. 1.0 PFD Chapter 2
@@ -39,10 +42,35 @@
{
Application application = facesContext.getApplication();
ViewHandler viewHandler = application.getViewHandler();
+ UIViewRoot root = facesContext.getViewRoot();
+ ViewDeclarationLanguage vdl = viewHandler.getViewDeclarationLanguage(
+ facesContext, root.getViewId());
+
try
{
- viewHandler.renderView(facesContext, facesContext.getViewRoot());
+ if (vdl != null)
+ {
+ vdl.buildView(facesContext, root);
+ }
+
+ facesContext.getApplication().publishEvent(
+ facesContext, PreRenderViewEvent.class, root);
+
+ // TODO: JSF 2.0 section 2.2.6, it says if the current response
+ // is a partial response(ajax), then there must be no content written
+ // outside of the f:view. This has sense only on jsp case, because
+ // we don't control jsp rendering and in this way we prevent unwanted
+ // rendering. But note f:ajax only works on facelets, and f:view
+ // tag handler only set properties for the current view root. It's
+ // more, in facelets, every thing that render is a UIComponent instance,
+ // so it is inside view root.
+ // Anyway, we should put the expected behavior (take a look at
+ // context.servlet.ResponseSwitch) here and enable rendering when
+ // PartialViewContextImpl.processPartialRendering(UIComponent, PhaseId)
+ // do its own work, but for now it is
+
+ viewHandler.renderView(facesContext, root);
}
catch (IOException e)
{
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewDeclarationLanguage.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewDeclarationLanguage.java?rev=834719&r1=834718&r2=834719&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewDeclarationLanguage.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewDeclarationLanguage.java Wed Nov 11 00:01:53 2009
@@ -807,10 +807,12 @@
// should that be handled? Or
// is this optimization simply so minor that it should just
// be trimmed altogether?
- if (!isFilledView(context, view))
- {
- buildView(context, view);
- }
+ // See JSF 2.0 spec section 2.2.6, buildView is called before
+ // Render Response
+ //if (!isFilledView(context, view))
+ //{
+ // buildView(context, view);
+ //}
// setup writer and assign it to the context
ResponseWriter origWriter = createResponseWriter(context);
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/jsp/JspViewDeclarationLanguage.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/jsp/JspViewDeclarationLanguage.java?rev=834719&r1=834718&r2=834719&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/jsp/JspViewDeclarationLanguage.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/jsp/JspViewDeclarationLanguage.java Wed Nov 11 00:01:53 2009
@@ -88,6 +88,12 @@
{
ExternalContext externalContext = context.getExternalContext();
ServletResponse response = (ServletResponse) externalContext.getResponse();
+ ServletRequest request = (ServletRequest) externalContext.getRequest();
+
+ Locale locale = view.getLocale();
+ response.setLocale(locale);
+ Config.set(request, Config.FMT_LOCALE, context.getViewRoot().getLocale());
+
String viewId = view.getViewId();
ViewResponseWrapper wrappedResponse = new ViewResponseWrapper((HttpServletResponse) response);
@@ -171,15 +177,11 @@
if (log.isLoggable(Level.FINEST))
log.finest("Rendering JSP view: " + viewId);
+ // Called on render response phase
+ //buildView(context, view);
ServletResponse response = (ServletResponse) externalContext.getResponse();
ServletRequest request = (ServletRequest) externalContext.getRequest();
- Locale locale = view.getLocale();
- response.setLocale(locale);
- Config.set(request, Config.FMT_LOCALE, context.getViewRoot().getLocale());
-
- buildView(context, view);
-
// handle character encoding as of section 2.5.2.2 of JSF 1.1
if (externalContext.getRequest() instanceof HttpServletRequest)
{