You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mm...@apache.org on 2007/02/25 09:10:55 UTC
svn commit: r511461 [3/3] - in /myfaces:
core/trunk/api/src/main/java/javax/faces/webapp/
core/trunk/impl/src/main/java/org/apache/myfaces/application/
core/trunk/impl/src/main/java/org/apache/myfaces/application/pss/
core/trunk/impl/src/main/java/org/...
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/taglib/core/ViewTag.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/taglib/core/ViewTag.java?view=diff&rev=511461&r1=511460&r2=511461
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/taglib/core/ViewTag.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/taglib/core/ViewTag.java Sun Feb 25 00:10:54 2007
@@ -49,6 +49,38 @@
extends UIComponentBodyTag
{
private static final Log log = LogFactory.getLog(ViewTag.class);
+ private static final String PARTIAL_STATE_SAVING_METHOD_PARAM_NAME = "javax.faces.PARTIAL_STATE_SAVING_METHOD";
+ private static final String PARTIAL_STATE_SAVING_METHOD_ON = "true";
+ private static final String PARTIAL_STATE_SAVING_METHOD_OFF = "false";
+
+ private Boolean _partialStateSaving = null;
+
+ private boolean isPartialStateSavingOn(javax.faces.context.FacesContext context)
+ {
+ if(context == null) throw new NullPointerException("context");
+ if (_partialStateSaving != null) return _partialStateSaving.booleanValue();
+ String stateSavingMethod = context.getExternalContext().getInitParameter(PARTIAL_STATE_SAVING_METHOD_PARAM_NAME);
+ if (stateSavingMethod == null)
+ {
+ _partialStateSaving = Boolean.FALSE; //Specs 10.1.3: default server saving
+ context.getExternalContext().log("No partial state saving method defined, assuming default partial state saving methode off.");
+ }
+ else if (stateSavingMethod.equals(PARTIAL_STATE_SAVING_METHOD_ON))
+ {
+ _partialStateSaving = Boolean.TRUE;
+ }
+ else if (stateSavingMethod.equals(PARTIAL_STATE_SAVING_METHOD_OFF))
+ {
+ _partialStateSaving = Boolean.FALSE;
+ }
+ else
+ {
+ _partialStateSaving = Boolean.FALSE; //Specs 10.1.3: default server saving
+ context.getExternalContext().log("Illegal partial state saving method '" + stateSavingMethod + "', default partial state saving will be used (partial state saving off).");
+ }
+ return _partialStateSaving.booleanValue();
+ }
+
public String getComponentType()
{
@@ -115,80 +147,83 @@
public int doAfterBody() throws JspException
{
if (log.isTraceEnabled()) log.trace("entering ViewTag.doAfterBody");
- try
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ if (!isPartialStateSavingOn(facesContext))
{
- BodyContent bodyContent = getBodyContent();
- if (bodyContent != null)
+ try
{
- FacesContext facesContext = FacesContext.getCurrentInstance();
- StateManager stateManager = facesContext.getApplication().getStateManager();
- StateManager.SerializedView serializedView
- = stateManager.saveSerializedView(facesContext);
-
- //until now we have written to a buffer
- ResponseWriter bufferWriter = facesContext.getResponseWriter();
- bufferWriter.flush();
- //now we switch to real output
- ResponseWriter realWriter = bufferWriter.cloneWithWriter(getPreviousOut());
- facesContext.setResponseWriter(realWriter);
-
- String bodyStr = bodyContent.getString();
- /*
- do this always - even with server-side-state saving
- if ( stateManager.isSavingStateInClient(facesContext) )
- { */
-
- int form_marker = bodyStr.indexOf(JspViewHandlerImpl.FORM_STATE_MARKER);
- int url_marker = bodyStr.indexOf(HtmlLinkRendererBase.URL_STATE_MARKER);
- int lastMarkerEnd = 0;
- while (form_marker != -1 || url_marker != -1)
+ BodyContent bodyContent = getBodyContent();
+ if (bodyContent != null)
{
- if (url_marker == -1 || (form_marker != -1 && form_marker < url_marker))
- {
- //replace form_marker
- realWriter.write(bodyStr, lastMarkerEnd, form_marker - lastMarkerEnd);
- stateManager.writeState(facesContext, serializedView);
- lastMarkerEnd = form_marker + JspViewHandlerImpl.FORM_STATE_MARKER_LEN;
- form_marker = bodyStr.indexOf(JspViewHandlerImpl.FORM_STATE_MARKER, lastMarkerEnd);
- }
- else
+ StateManager stateManager = facesContext.getApplication().getStateManager();
+ StateManager.SerializedView serializedView
+ = stateManager.saveSerializedView(facesContext);
+
+ //until now we have written to a buffer
+ ResponseWriter bufferWriter = facesContext.getResponseWriter();
+ bufferWriter.flush();
+ //now we switch to real output
+ ResponseWriter realWriter = bufferWriter.cloneWithWriter(getPreviousOut());
+ facesContext.setResponseWriter(realWriter);
+
+ String bodyStr = bodyContent.getString();
+ /*
+ do this always - even with server-side-state saving
+ if ( stateManager.isSavingStateInClient(facesContext) )
+ { */
+
+ int form_marker = bodyStr.indexOf(JspViewHandlerImpl.FORM_STATE_MARKER);
+ int url_marker = bodyStr.indexOf(HtmlLinkRendererBase.URL_STATE_MARKER);
+ int lastMarkerEnd = 0;
+ while (form_marker != -1 || url_marker != -1)
{
- //replace url_marker
- realWriter.write(bodyStr, lastMarkerEnd, url_marker - lastMarkerEnd);
- if (stateManager instanceof MyfacesStateManager)
+ if (url_marker == -1 || (form_marker != -1 && form_marker < url_marker))
{
- ((MyfacesStateManager)stateManager).writeStateAsUrlParams(facesContext,
- serializedView);
+ //replace form_marker
+ realWriter.write(bodyStr, lastMarkerEnd, form_marker - lastMarkerEnd);
+ stateManager.writeState(facesContext, serializedView);
+ lastMarkerEnd = form_marker + JspViewHandlerImpl.FORM_STATE_MARKER_LEN;
+ form_marker = bodyStr.indexOf(JspViewHandlerImpl.FORM_STATE_MARKER, lastMarkerEnd);
}
else
{
- log.error("Current StateManager is no MyfacesStateManager and does not support saving state in url parameters.");
+ //replace url_marker
+ realWriter.write(bodyStr, lastMarkerEnd, url_marker - lastMarkerEnd);
+ if (stateManager instanceof MyfacesStateManager)
+ {
+ ((MyfacesStateManager)stateManager).writeStateAsUrlParams(facesContext,
+ serializedView);
+ }
+ else
+ {
+ log.error("Current StateManager is no MyfacesStateManager and does not support saving state in url parameters.");
+ }
+ lastMarkerEnd = url_marker + HtmlLinkRendererBase.URL_STATE_MARKER_LEN;
+ url_marker = bodyStr.indexOf(HtmlLinkRendererBase.URL_STATE_MARKER, lastMarkerEnd);
}
- lastMarkerEnd = url_marker + HtmlLinkRendererBase.URL_STATE_MARKER_LEN;
- url_marker = bodyStr.indexOf(HtmlLinkRendererBase.URL_STATE_MARKER, lastMarkerEnd);
}
- }
- realWriter.write(bodyStr, lastMarkerEnd, bodyStr.length() - lastMarkerEnd);
+ realWriter.write(bodyStr, lastMarkerEnd, bodyStr.length() - lastMarkerEnd);
- /* change over to do this always - even with server-side state saving
- }
- else
- {
- realWriter.write( bodyStr );
- } */
+ /* change over to do this always - even with server-side state saving
+ }
+ else
+ {
+ realWriter.write( bodyStr );
+ } */
- /* before, this was done when getSerializedView was null
+ /* before, this was done when getSerializedView was null
+ }
+ else
+ {
+ bodyContent.writeOut(getPreviousOut());
+ }*/
}
- else
- {
- bodyContent.writeOut(getPreviousOut());
- }*/
}
- }
- catch (IOException e)
- {
- log.error("Error writing body content", e);
- throw new JspException(e);
+ catch (IOException e)
+ {
+ log.error("Error writing body content", e);
+ throw new JspException(e);
+ }
}
if (log.isTraceEnabled()) log.trace("leaving ViewTag.doAfterBody");
return super.doAfterBody();
Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.java?view=diff&rev=511461&r1=511460&r2=511461
==============================================================================
--- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.java (original)
+++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.java Sun Feb 25 00:10:54 2007
@@ -137,6 +137,10 @@
return _contentType;
}
+ public void setContentType(java.lang.String contentType) {
+ _contentType = contentType;
+ }
+
public String getCharacterEncoding()
{
return _characterEncoding;
Modified: myfaces/tomahawk/trunk/examples/simple/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/examples/simple/src/main/webapp/WEB-INF/web.xml?view=diff&rev=511461&r1=511460&r2=511461
==============================================================================
--- myfaces/tomahawk/trunk/examples/simple/src/main/webapp/WEB-INF/web.xml (original)
+++ myfaces/tomahawk/trunk/examples/simple/src/main/webapp/WEB-INF/web.xml Sun Feb 25 00:10:54 2007
@@ -14,7 +14,7 @@
<description>State saving method: "client" or "server" (= default)
See JSF Specification 2.5.3</description>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
- <param-value>server</param-value>
+ <param-value>client</param-value>
</context-param>
<context-param>
<description>Only applicable if state saving method is "server" (= default).
@@ -119,6 +119,24 @@
<param-name>org.apache.myfaces.RESOURCE_VIRTUAL_PATH</param-name>
<param-value>/faces/extensionResource</param-value>
</context-param>
+
+ <context-param>
+ <description>
+ This parameter enables partial state saving.
+ </description>
+ <param-name>javax.faces.PARTIAL_STATE_SAVING_METHOD</param-name>
+ <param-value>false</param-value>
+ </context-param>
+
+ <context-param>
+ <description>
+ If true every time a page is rendered, the corresponding JSP is dispatched also.
+ This is very usefull if Scriptlets are used inside the JSP.
+ </description>
+ <param-name>javax.faces.PARTIAL_STATE_SAVING_DISPATCH_EVERY_TIME</param-name>
+ <param-value>true</param-value>
+ </context-param>
+
<filter>
<filter-name>extensionsFilter</filter-name>