Revision: 1179
http://stripes.svn.sourceforge.net/stripes/?rev=1179&view=rev
Author: bengunter
Date: 2009-10-20 19:46:09 +0000 (Tue, 20 Oct 2009)
Log Message:
-----------
Fixed STS-647: WizardFieldTag should output hidden fields for parameters with
empty value. I used basically the same logic as provided in the patch, but
implemented differently.
Modified Paths:
--------------
branches/1.5.x/stripes/src/net/sourceforge/stripes/tag/WizardFieldsTag.java
Modified:
branches/1.5.x/stripes/src/net/sourceforge/stripes/tag/WizardFieldsTag.java
===================================================================
--- branches/1.5.x/stripes/src/net/sourceforge/stripes/tag/WizardFieldsTag.java
2009-10-20 17:03:08 UTC (rev 1178)
+++ branches/1.5.x/stripes/src/net/sourceforge/stripes/tag/WizardFieldsTag.java
2009-10-20 19:46:09 UTC (rev 1179)
@@ -14,15 +14,17 @@
*/
package net.sourceforge.stripes.tag;
+import static
net.sourceforge.stripes.controller.StripesConstants.URL_KEY_FIELDS_PRESENT;
import net.sourceforge.stripes.action.ActionBean;
import net.sourceforge.stripes.controller.StripesConstants;
import net.sourceforge.stripes.exception.StripesJspException;
-import net.sourceforge.stripes.util.CollectionUtil;
+import net.sourceforge.stripes.util.CryptoUtil;
+import net.sourceforge.stripes.util.HtmlUtil;
+import javax.servlet.ServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TryCatchFinally;
import java.util.HashSet;
-import java.util.Map;
import java.util.Set;
/**
@@ -72,8 +74,9 @@
excludes.add( StripesConstants.URL_KEY_EVENT_NAME );
// Use the submitted action bean to eliminate any event related
parameters
- ActionBean submittedActionBean = (ActionBean)
-
getPageContext().getRequest().getAttribute(StripesConstants.REQ_ATTR_ACTION_BEAN);
+ ServletRequest request = getPageContext().getRequest();
+ ActionBean submittedActionBean = (ActionBean) request
+ .getAttribute(StripesConstants.REQ_ATTR_ACTION_BEAN);
if (submittedActionBean != null) {
String eventName = submittedActionBean.getContext().getEventName();
@@ -96,13 +99,18 @@
hidden.setPageContext( getPageContext() );
hidden.setParent( getParent() );
+ // Combine actual parameter names with input names from the form,
which might not be
+ // represented by a real request parameter
+ Set<String> paramNames = new HashSet<String>();
+ paramNames.addAll(request.getParameterMap().keySet());
+ String fieldsPresent =
request.getParameter(URL_KEY_FIELDS_PRESENT);
+ if (fieldsPresent != null) {
+
paramNames.addAll(HtmlUtil.splitValues(CryptoUtil.decrypt(fieldsPresent)));
+ }
+
// Loop through the request parameters and output the values
- Map<String,String[]> params =
getPageContext().getRequest().getParameterMap();
- for (Map.Entry<String,String[]> entry : params.entrySet()) {
- String name = entry.getKey();
- String[] values = entry.getValue();
-
- if ( !excludes.contains(name) && !CollectionUtil.empty(values)
) {
+ for (String name : paramNames) {
+ if (!excludes.contains(name)) {
hidden.setName(name);
try {
hidden.doStartTag();
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Stripes-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-development