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 2010/05/07 00:14:42 UTC
svn commit: r941953 - in
/myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared:
config/MyfacesConfig.java renderkit/html/HtmlButtonRendererBase.java
renderkit/html/HtmlLinkRendererBase.java
Author: lu4242
Date: Thu May 6 22:14:42 2010
New Revision: 941953
URL: http://svn.apache.org/viewvc?rev=941953&view=rev
Log:
merge revisions 940133-941950 including MYFACES-2463
Modified:
myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/config/MyfacesConfig.java
myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java
myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java
Modified: myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/config/MyfacesConfig.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/config/MyfacesConfig.java?rev=941953&r1=941952&r2=941953&view=diff
==============================================================================
--- myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/config/MyfacesConfig.java (original)
+++ myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/config/MyfacesConfig.java Thu May 6 22:14:42 2010
@@ -156,14 +156,28 @@ public class MyfacesConfig
private static final boolean INIT_PARAM_STRICT_XHTML_LINKS_DEFAULT = true;
/**
- *
+ * This param renders the clear javascript on button necessary only for
+ * compatibility with hidden fields feature of myfaces. This is done
+ * because jsf ri does not render javascript on onclick method for button,
+ * so myfaces should do this.
*/
- @JSFWebConfigParam(defaultValue="false", expectedValues="true,false",since="1.1")
+ @JSFWebConfigParam(defaultValue="false", expectedValues="true,false",since="1.2.3")
private static final String INIT_PARAM_RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON = "org.apache.myfaces.RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON";
private static final boolean INIT_PARAM_RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON_DEFAULT= false;
/**
- *
+ * This param renders hidden fields at the end of h:form for link params when h:commandLink + f:param is used, instead
+ * use javascript to create them. Set this param to true also enables org.apache.myfaces.RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON
+ * automatically to ensure consistency. This feature is required to support Windows Mobile 6, because in this environment,
+ * document.createElement() and form.appendChild() javascript methods are not supported.
+ */
+ @JSFWebConfigParam(defaultValue="false", expectedValues="true,false",since="1.2.9")
+ private static final String INIT_PARAM_RENDER_HIDDEN_FIELDS_FOR_LINK_PARAMS = "org.apache.myfaces.RENDER_HIDDEN_FIELDS_FOR_LINK_PARAMS";
+ private static final boolean INIT_PARAM_RENDER_HIDDEN_FIELDS_FOR_LINK_PARAMS_DEFAULT= false;
+
+ /**
+ * Add a code that save the form before submit using a
+ * link (call to window.external.AutoCompleteSaveForm(form) ). It's a bug on IE.
*/
@JSFWebConfigParam(defaultValue="false", expectedValues="true,false",since="1.1")
private static final String INIT_PARAM_SAVE_FORM_SUBMIT_LINK_IE = "org.apache.myfaces.SAVE_FORM_SUBMIT_LINK_IE";
@@ -215,6 +229,7 @@ public class MyfacesConfig
private boolean _renderViewStateId;
private boolean _strictXhtmlLinks;
private boolean _renderClearJavascriptOnButton;
+ private boolean renderHiddenFieldsForLinkParams;
private boolean _saveFormSubmitLinkIE;
private String _delegateFacesServlet;
private boolean _refreshTransientBuildOnPSS;
@@ -299,6 +314,9 @@ public class MyfacesConfig
myfacesConfig.setRenderClearJavascriptOnButton(getBooleanInitParameter(extCtx, INIT_PARAM_RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON,
INIT_PARAM_RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON_DEFAULT));
+ myfacesConfig.setRenderHiddenFieldsForLinkParams(getBooleanInitParameter(extCtx, INIT_PARAM_RENDER_HIDDEN_FIELDS_FOR_LINK_PARAMS,
+ INIT_PARAM_RENDER_HIDDEN_FIELDS_FOR_LINK_PARAMS_DEFAULT));
+
myfacesConfig.setSaveFormSubmitLinkIE(getBooleanInitParameter(extCtx, INIT_PARAM_SAVE_FORM_SUBMIT_LINK_IE,
INIT_PARAM_SAVE_FORM_SUBMIT_LINK_IE_DEFAULT));
@@ -653,6 +671,17 @@ public class MyfacesConfig
return _renderClearJavascriptOnButton;
}
+ public boolean isRenderHiddenFieldsForLinkParams()
+ {
+ return renderHiddenFieldsForLinkParams;
+ }
+
+ public void setRenderHiddenFieldsForLinkParams(
+ boolean renderHiddenFieldsForLinkParams)
+ {
+ this.renderHiddenFieldsForLinkParams = renderHiddenFieldsForLinkParams;
+ }
+
public void setSaveFormSubmitLinkIE(boolean saveFormSubmitLinkIE)
{
_saveFormSubmitLinkIE = saveFormSubmitLinkIE;
Modified: myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java?rev=941953&r1=941952&r2=941953&view=diff
==============================================================================
--- myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java (original)
+++ myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java Thu May 6 22:14:42 2010
@@ -298,7 +298,8 @@ public class HtmlButtonRendererBase
{
String formName = nestedFormInfo.getFormName();
- if (JavascriptUtils.isRenderClearJavascriptOnButton(facesContext.getExternalContext()))
+ if (JavascriptUtils.isRenderClearJavascriptOnButton(facesContext.getExternalContext()) ||
+ MyfacesConfig.getCurrentInstance(facesContext.getExternalContext()).isRenderHiddenFieldsForLinkParams() )
{
//call the script to clear the form (clearFormHiddenParams_<formName>) method
HtmlRendererUtils.appendClearHiddenCommandFormParamsFunctionCall(onClick, formName);
Modified: myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java?rev=941953&r1=941952&r2=941953&view=diff
==============================================================================
--- myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java (original)
+++ myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java Thu May 6 22:14:42 2010
@@ -333,7 +333,7 @@ public abstract class HtmlLinkRendererBa
else {
HtmlRendererUtils.renderFormSubmitScript(facesContext);
- StringBuffer params = addChildParameters(component, nestingForm);
+ StringBuffer params = addChildParameters(facesContext, component, nestingForm);
String target = getTarget(component);
@@ -351,8 +351,11 @@ public abstract class HtmlLinkRendererBa
//Not necessary since we are using oamSetHiddenInput to create input hidden fields
//render hidden field - todo: in here for backwards compatibility
- //String hiddenFieldName = HtmlRendererUtils.getHiddenCommandLinkFieldName(formInfo);
- //addHiddenCommandParameter(facesContext, nestingForm, hiddenFieldName);
+ if (MyfacesConfig.getCurrentInstance(facesContext.getExternalContext()).isRenderHiddenFieldsForLinkParams())
+ {
+ String hiddenFieldName = HtmlRendererUtils.getHiddenCommandLinkFieldName(formInfo);
+ addHiddenCommandParameter(facesContext, nestingForm, hiddenFieldName);
+ }
}
@@ -491,8 +494,7 @@ public abstract class HtmlLinkRendererBa
return target;
}
- private StringBuffer addChildParameters(UIComponent component, UIComponent nestingForm)
- {
+ private StringBuffer addChildParameters(FacesContext context, UIComponent component, UIComponent nestingForm) {
//add child parameters
StringBuffer params = new StringBuffer();
params.append("[");
@@ -504,7 +506,10 @@ public abstract class HtmlLinkRendererBa
String name = param.getName();
//Not necessary, since we are using oamSetHiddenInput to create hidden fields
- //addHiddenCommandParameter(FacesContext.getCurrentInstance(), nestingForm, name);
+ if (MyfacesConfig.getCurrentInstance(context.getExternalContext()).isRenderHiddenFieldsForLinkParams())
+ {
+ addHiddenCommandParameter(context, nestingForm, name);
+ }
Object value = param.getValue();