Repository: struts
Updated Branches:
  refs/heads/develop 9944b274e -> 1dcf58537


WW-4327 Defines new readonly attribute and cleans up templates


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/1dcf5853
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/1dcf5853
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/1dcf5853

Branch: refs/heads/develop
Commit: 1dcf58537a44c09192b96f7ba6c0c24a7ee768a5
Parents: 9944b27
Author: Lukasz Lenart <lukaszlen...@apache.org>
Authored: Fri Jul 11 11:07:09 2014 +0200
Committer: Lukasz Lenart <lukaszlen...@apache.org>
Committed: Fri Jul 11 11:07:09 2014 +0200

----------------------------------------------------------------------
 .../org/apache/struts2/components/Checkbox.java | 10 ++++
 .../apache/struts2/components/CheckboxList.java | 19 +++++++-
 .../org/apache/struts2/components/Radio.java    | 18 +++++++-
 .../main/resources/template/simple/checkbox.ftl | 14 +++---
 .../resources/template/simple/checkboxlist.ftl  | 24 +++++-----
 .../template/simple/common-attributes.ftl       |  2 +-
 core/src/main/resources/template/simple/css.ftl |  8 ++--
 .../resources/template/simple/doubleselect.ftl  | 40 ++++++++--------
 .../resources/template/simple/fielderror.ftl    | 12 ++---
 .../src/main/resources/template/simple/file.ftl | 14 +++---
 .../resources/template/simple/form-common.ftl   | 28 ++++++------
 .../src/main/resources/template/simple/form.ftl |  4 +-
 .../main/resources/template/simple/hidden.ftl   | 10 ++--
 .../template/simple/inputtransferselect.ftl     | 48 ++++++++++----------
 .../main/resources/template/simple/label.ftl    | 12 ++---
 .../main/resources/template/simple/optgroup.ftl |  4 +-
 .../main/resources/template/simple/password.ftl | 18 ++++----
 .../main/resources/template/simple/radiomap.ftl | 19 ++++----
 .../main/resources/template/simple/reset.ftl    | 26 +++++------
 .../main/resources/template/simple/select.ftl   | 28 ++++++------
 .../main/resources/template/simple/submit.ftl   | 34 +++++++-------
 .../src/main/resources/template/simple/text.ftl | 18 ++++----
 .../main/resources/template/simple/textarea.ftl | 20 ++++----
 core/src/site/resources/tags/checkbox.html      |  8 ++++
 core/src/site/resources/tags/checkboxlist.html  |  8 ++++
 core/src/site/resources/tags/radio.html         |  8 ++++
 26 files changed, 262 insertions(+), 192 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/java/org/apache/struts2/components/Checkbox.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/Checkbox.java 
b/core/src/main/java/org/apache/struts2/components/Checkbox.java
index e1765b2..5ab5d44 100644
--- a/core/src/main/java/org/apache/struts2/components/Checkbox.java
+++ b/core/src/main/java/org/apache/struts2/components/Checkbox.java
@@ -60,6 +60,7 @@ public class Checkbox extends UIBean {
     final public static String TEMPLATE = "checkbox";
 
     protected String fieldValue;
+    protected String readonly;
 
     public Checkbox(ValueStack stack, HttpServletRequest request, 
HttpServletResponse response) {
         super(stack, request, response);
@@ -75,6 +76,10 @@ public class Checkbox extends UIBean {
         } else {
             addParameter("fieldValue", "true");
         }
+        
+        if (readonly != null) {
+            addParameter("readonly", findValue(readonly, Boolean.class));
+        }
     }
 
     protected Class getValueClassType() {
@@ -85,5 +90,10 @@ public class Checkbox extends UIBean {
     public void setFieldValue(String fieldValue) {
         this.fieldValue = fieldValue;
     }
+    
+    @StrutsTagAttribute(description="Whether the input is readonly", 
type="Boolean", defaultValue="false")
+    public void setReadonly(String readonly) {
+        this.readonly = readonly;
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/java/org/apache/struts2/components/CheckboxList.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/CheckboxList.java 
b/core/src/main/java/org/apache/struts2/components/CheckboxList.java
index 6415efb..503dad5 100644
--- a/core/src/main/java/org/apache/struts2/components/CheckboxList.java
+++ b/core/src/main/java/org/apache/struts2/components/CheckboxList.java
@@ -25,6 +25,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.struts2.views.annotations.StrutsTag;
+import org.apache.struts2.views.annotations.StrutsTagAttribute;
 
 import com.opensymphony.xwork2.util.ValueStack;
 
@@ -51,6 +52,8 @@ import com.opensymphony.xwork2.util.ValueStack;
         allowDynamicAttributes = true)
 public class CheckboxList extends ListUIBean {
     final public static String TEMPLATE = "checkboxlist";
+    
+    protected String readonly;
 
     public CheckboxList(ValueStack stack, HttpServletRequest request, 
HttpServletResponse response) {
         super(stack, request, response);
@@ -59,4 +62,18 @@ public class CheckboxList extends ListUIBean {
     protected String getDefaultTemplate() {
         return TEMPLATE;
     }
-}
+    
+    public void evaluateExtraParams() {
+       super.evaluateExtraParams();
+        
+        if (readonly != null) {
+            addParameter("readonly", findValue(readonly, Boolean.class));
+        }
+    }
+    
+    @StrutsTagAttribute(description="Whether the input is readonly", 
type="Boolean", defaultValue="false")
+    public void setReadonly(String readonly) {
+        this.readonly = readonly;
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/java/org/apache/struts2/components/Radio.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/Radio.java 
b/core/src/main/java/org/apache/struts2/components/Radio.java
index 16fd35d..ce13803 100644
--- a/core/src/main/java/org/apache/struts2/components/Radio.java
+++ b/core/src/main/java/org/apache/struts2/components/Radio.java
@@ -23,6 +23,7 @@ package org.apache.struts2.components;
 
 import com.opensymphony.xwork2.util.ValueStack;
 import org.apache.struts2.views.annotations.StrutsTag;
+import org.apache.struts2.views.annotations.StrutsTagAttribute;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -58,6 +59,8 @@ import javax.servlet.http.HttpServletResponse;
         allowDynamicAttributes = true)
 public class Radio extends ListUIBean {
     final public static String TEMPLATE = "radiomap";
+    
+    protected String readonly;
 
     public Radio(ValueStack stack, HttpServletRequest request, 
HttpServletResponse response) {
         super(stack, request, response);
@@ -66,4 +69,17 @@ public class Radio extends ListUIBean {
     protected String getDefaultTemplate() {
         return TEMPLATE;
     }
-}
+    
+    public void evaluateExtraParams() {
+       super.evaluateExtraParams();
+        
+        if (readonly != null) {
+            addParameter("readonly", findValue(readonly, Boolean.class));
+        }
+    }
+    
+    @StrutsTagAttribute(description="Whether the input is readonly", 
type="Boolean", defaultValue="false")
+    public void setReadonly(String readonly) {
+        this.readonly = readonly;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/resources/template/simple/checkbox.ftl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/template/simple/checkbox.ftl 
b/core/src/main/resources/template/simple/checkbox.ftl
index 1ef6b03..d431888 100644
--- a/core/src/main/resources/template/simple/checkbox.ftl
+++ b/core/src/main/resources/template/simple/checkbox.ftl
@@ -24,27 +24,27 @@
 <#if parameters.nameValue?? && parameters.nameValue>
  checked="checked"<#rt/>
 </#if>
-<#if parameters.disabled?default(false)>
+<#if parameters.disabled!false>
  disabled="disabled"<#rt/>
 </#if>
-<#if parameters.readonly?default(false)>
+<#if parameters.readonly!false>
  readonly="readonly"<#rt/>
 </#if>
-<#if parameters.tabindex??>
+<#if parameters.tabindex?has_content>
  tabindex="${parameters.tabindex?html}"<#rt/>
 </#if>
-<#if parameters.id??>
+<#if parameters.id?has_content>
  id="${parameters.id?html}"<#rt/>
 </#if>
 <#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
-<#if parameters.title??>
+<#if parameters.title?has_content>
  title="${parameters.title?html}"<#rt/>
 </#if>
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
 /><input type="hidden" id="__checkbox_${parameters.id?html}" 
name="__checkbox_${parameters.name?html}" 
value="${parameters.fieldValue?html}"<#rt/>
-<#if parameters.disabled?default(false)>
+<#if parameters.disabled!false>
  disabled="disabled"<#rt/>
 </#if>
- />
+ />
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/resources/template/simple/checkboxlist.ftl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/template/simple/checkboxlist.ftl 
b/core/src/main/resources/template/simple/checkboxlist.ftl
index 3ce8686..35c1fd3 100644
--- a/core/src/main/resources/template/simple/checkboxlist.ftl
+++ b/core/src/main/resources/template/simple/checkboxlist.ftl
@@ -30,7 +30,7 @@
             <#assign itemKey = stack.findValue('top')/>
     </#if>
     <#if parameters.listValue??>
-        <#assign itemValue = 
stack.findString(parameters.listValue)?default("")/>
+        <#assign itemValue = stack.findString(parameters.listValue)!""/>
         <#else>
             <#assign itemValue = stack.findString('top')/>
     </#if>
@@ -57,7 +57,7 @@
     </#if>
     <#assign itemKeyStr=itemKey.toString() />
 <input type="checkbox" name="${parameters.name?html}" 
value="${itemKeyStr?html}"<#rt/>
-    <#if parameters.id??>
+    <#if parameters.id?has_content>
        id="${parameters.id?html}-${itemCount}"<#rt/>
     <#else>
        id="${parameters.name?html}-${itemCount}"<#rt/>
@@ -65,27 +65,27 @@
     <#if tag.contains(parameters.nameValue, itemKey)>
        checked="checked"<#rt/>
     </#if>
-    <#if parameters.disabled?default(false)>
+    <#if parameters.disabled!false>
        disabled="disabled"<#rt/>
     </#if>
-    <#if itemCssClass?if_exists != "">
+    <#if itemCssClass! != "">
      class="${itemCssClass?html}"<#rt/>
     <#else>
-        <#if parameters.cssClass??>
+        <#if parameters.cssClass?has_content>
      class="${parameters.cssClass?html}"<#rt/>
         </#if>
     </#if>
-    <#if itemCssStyle?if_exists != "">
+    <#if itemCssStyle! != "">
      style="${itemCssStyle?html}"<#rt/>
     <#else>
-        <#if parameters.cssStyle??>
+        <#if parameters.cssStyle?has_content>
      style="${parameters.cssStyle?html}"<#rt/>
         </#if>
     </#if>
-    <#if itemTitle?if_exists != "">
+    <#if itemTitle! != "">
      title="${itemTitle?html}"<#rt/>
     <#else>
-        <#if parameters.title??>
+        <#if parameters.title?has_content>
      title="${parameters.title?html}"<#rt/>
         </#if>
     </#if>
@@ -95,7 +95,7 @@
     <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
         />
 <label<#rt/> 
-    <#if parameters.id??>
+    <#if parameters.id?has_content>
         for="${parameters.id?html}-${itemCount}"<#rt/>
     <#else>
         for="${parameters.name?html}-${itemCount}"<#rt/>
@@ -107,7 +107,7 @@
 </#if>
 <input type="hidden" id="__multiselect_${parameters.id?html}" 
name="__multiselect_${parameters.name?html}"
        value=""<#rt/>
-<#if parameters.disabled?default(false)>
+<#if parameters.disabled!false>
        disabled="disabled"<#rt/>
 </#if>
-        />
+ />
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/resources/template/simple/common-attributes.ftl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/template/simple/common-attributes.ftl 
b/core/src/main/resources/template/simple/common-attributes.ftl
index 6056654..909c37d 100644
--- a/core/src/main/resources/template/simple/common-attributes.ftl
+++ b/core/src/main/resources/template/simple/common-attributes.ftl
@@ -20,6 +20,6 @@
  * under the License.
  */
 -->
-<#if parameters.accesskey??>
+<#if parameters.accesskey?has_content>
  accesskey="${parameters.accesskey?html}" 
 </#if>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/resources/template/simple/css.ftl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/template/simple/css.ftl 
b/core/src/main/resources/template/simple/css.ftl
index 6623c1d..2d8e68e 100644
--- a/core/src/main/resources/template/simple/css.ftl
+++ b/core/src/main/resources/template/simple/css.ftl
@@ -21,14 +21,14 @@
  */
 -->
 <#assign hasFieldErrors = parameters.name?? && fieldErrors?? && 
fieldErrors[parameters.name]??/>
-<#if parameters.cssClass?? && !(hasFieldErrors && parameters.cssErrorClass??)>
+<#if parameters.cssClass?has_content && !(hasFieldErrors && 
parameters.cssErrorClass??)>
  class="${parameters.cssClass?html}"<#rt/>
-<#elseif parameters.cssClass?? && (hasFieldErrors && 
parameters.cssErrorClass??)>
+<#elseif parameters.cssClass?has_content && (hasFieldErrors && 
parameters.cssErrorClass??)>
  class="${parameters.cssClass?html} ${parameters.cssErrorClass?html}"<#rt/>
-<#elseif !(parameters.cssClass??) && (hasFieldErrors && 
parameters.cssErrorClass??)>
+<#elseif !(parameters.cssClass?has_content) && (hasFieldErrors && 
parameters.cssErrorClass??)>
  class="${parameters.cssErrorClass?html}"<#rt/>
 </#if>
-<#if parameters.cssStyle?? && !(hasFieldErrors && (parameters.cssErrorStyle?? 
|| parameters.cssErrorClass??))>
+<#if parameters.cssStyle?has_content && !(hasFieldErrors && 
(parameters.cssErrorStyle?? || parameters.cssErrorClass??))>
  style="${parameters.cssStyle?html}"<#rt/>
 <#elseif hasFieldErrors && parameters.cssErrorStyle??>
  style="${parameters.cssErrorStyle?html}"<#rt/>

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/resources/template/simple/doubleselect.ftl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/template/simple/doubleselect.ftl 
b/core/src/main/resources/template/simple/doubleselect.ftl
index 8880377..313eb16 100644
--- a/core/src/main/resources/template/simple/doubleselect.ftl
+++ b/core/src/main/resources/template/simple/doubleselect.ftl
@@ -31,43 +31,43 @@
 
 <br/>
 <select<#rt/>
-        name="${parameters.doubleName?default("")?html}"<#rt/>
-<#if parameters.disabled?default(false)>
+        name="${(parameters.doubleName!"")?html}"<#rt/>
+<#if parameters.disabled!false>
         disabled="disabled"<#rt/>
 </#if>
-<#if parameters.doubleTabindex??>
+<#if parameters.doubleTabindex?has_content>
         tabindex="${parameters.doubleTabindex?html}"<#rt/>
 </#if>
-<#if parameters.doubleId??>
+<#if parameters.doubleId?has_content>
         id="${parameters.doubleId?html}"<#rt/>
 </#if>
-<#if parameters.doubleCss??>
+<#if parameters.doubleCss?has_content>
         class="${parameters.doubleCss?html}"<#rt/>
 </#if>
-<#if parameters.doubleStyle??>
+<#if parameters.doubleStyle?has_content>
         style="${parameters.doubleStyle?html}"<#rt/>
 </#if>
-<#if parameters.title??>
+<#if parameters.title?has_content>
         title="${parameters.title?html}"<#rt/>
 </#if>
-<#if parameters.multiple?default(false)>
+<#if parameters.multiple!false>
         multiple="multiple"<#rt/>
 </#if>
-<#if parameters.get("doubleSize")??>
+<#if parameters.get("doubleSize")?has_content>
         size="${parameters.get("doubleSize")?html}"<#rt/>
 </#if>
-<#if parameters.doubleMultiple?default(false)>
+<#if parameters.doubleMultiple!false>
         multiple="multiple"<#rt/>
 </#if>
-<#if parameters.doubleDisabled?default(false)>
+<#if parameters.doubleDisabled!false>
         disabled="disabled"<#rt/>
 </#if>
         >
 </select>
-<#if parameters.doubleMultiple?default(false)>
+<#if parameters.doubleMultiple!false>
 <input type="hidden" id="__multiselect_${parameters.doubleId?html}"
-       name="__multiselect_${parameters.doubleName?default("")?html}" 
value=""<#rt/>
-    <#if parameters.doubleDisabled?default(false)>
+       name="__multiselect_${(parameters.doubleName!"")?html}" value=""<#rt/>
+    <#if parameters.doubleDisabled!false>
        disabled="disabled"<#rt/>
     </#if>
         />
@@ -132,13 +132,13 @@
             </#if>
         </#if>
     ${parameters.id}Group[${itemCount}][${doubleItemCount}] = new 
Option("${doubleItemValue?js_string}", "${doubleItemKeyStr?js_string}");
-        <#if itemDoubleCssClass?if_exists != "">
+        <#if itemDoubleCssClass! != "">
     
${parameters.id}Group[${itemCount}][${doubleItemCount}].setAttribute("class","${itemDoubleCssClass?html}");
         </#if>
-        <#if itemDoubleCssStyle?if_exists != "">
+        <#if itemDoubleCssStyle! != "">
         
${parameters.id}Group[${itemCount}][${doubleItemCount}].setAttribute("style","${itemDoubleCssStyle?html}");
         </#if>
-        <#if itemDoubleTitle?if_exists != "">
+        <#if itemDoubleTitle! != "">
         
${parameters.id}Group[${itemCount}][${doubleItemCount}].setAttribute("title","${itemDoubleTitle?html}");
         </#if>
 
@@ -170,8 +170,8 @@
 
         for (i = 0; i < ${parameters.id}Group[x].length; i++) {
             ${parameters.id}Temp.options[i] = new 
Option(${parameters.id}Group[x][i].text, ${parameters.id}Group[x][i].value);
-        <#if parameters.doubleNameValue?exists>
-            <#if parameters.doubleMultiple?exists>
+        <#if parameters.doubleNameValue??>
+            <#if parameters.doubleMultiple??>
                 for (j = 0; j < ${parameters.doubleNameValue}.
                 length;
                 j++
@@ -195,4 +195,4 @@
             ${parameters.id}Temp.options[0].selected = true;
         }
     }
-</script>
+</script>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/resources/template/simple/fielderror.ftl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/template/simple/fielderror.ftl 
b/core/src/main/resources/template/simple/fielderror.ftl
index a37ff1f..81e95d9 100644
--- a/core/src/main/resources/template/simple/fielderror.ftl
+++ b/core/src/main/resources/template/simple/fielderror.ftl
@@ -34,15 +34,15 @@
                     <#assign eValue = fieldErrors[fieldErrorFieldName]><#t/>
                     <#if (haveMatchedErrorField && (!doneStartUlTag))><#t/>
                     <ul<#rt/>
-                        <#if parameters.id?if_exists != "">
+                        <#if parameters.id?has_content>
                                 id="${parameters.id?html}"<#rt/>
                         </#if>
-                        <#if parameters.cssClass??>
+                        <#if parameters.cssClass?has_content>
                                 class="${parameters.cssClass?html}"<#rt/>
                             <#else>
                                 class="errorMessage"<#rt/>
                         </#if>
-                        <#if parameters.cssStyle??>
+                        <#if parameters.cssStyle?has_content>
                                 style="${parameters.cssStyle?html}"<#rt/>
                         </#if>
                             >
@@ -61,12 +61,12 @@
         <#else><#t/>
         <#if (eKeysSize > 0)><#t/>
         <ul<#rt/>
-            <#if parameters.cssClass??>
+            <#if parameters.cssClass?has_content>
                     class="${parameters.cssClass?html}"<#rt/>
                 <#else>
                     class="errorMessage"<#rt/>
             </#if>
-            <#if parameters.cssStyle??>
+            <#if parameters.cssStyle?has_content>
                     style="${parameters.cssStyle?html}"<#rt/>
             </#if>
                 >
@@ -79,4 +79,4 @@
         </ul>
         </#if><#t/>
     </#if><#t/>
-</#if><#t/>
+</#if><#t/>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/resources/template/simple/file.ftl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/template/simple/file.ftl 
b/core/src/main/resources/template/simple/file.ftl
index c7b7a83..f0a1140 100644
--- a/core/src/main/resources/template/simple/file.ftl
+++ b/core/src/main/resources/template/simple/file.ftl
@@ -21,25 +21,25 @@
  */
 -->
 <input type="file"<#rt/>
- name="${parameters.name?default("")?html}"<#rt/>
-<#if parameters.get("size")??>
+ name="${(parameters.name!"")?html}"<#rt/>
+<#if parameters.get("size")?has_content>
  size="${parameters.get("size")?html}"<#rt/>
 </#if>
  value=""<#rt/>
-<#if parameters.disabled?default(false)>
+<#if parameters.disabled!false>
  disabled="disabled"<#rt/>
 </#if>
-<#if parameters.accept??>
+<#if parameters.accept?has_content>
  accept="${parameters.accept?html}"<#rt/>
 </#if>
-<#if parameters.tabindex??>
+<#if parameters.tabindex?has_content>
  tabindex="${parameters.tabindex?html}"<#rt/>
 </#if>
-<#if parameters.id??>
+<#if parameters.id?has_content>
  id="${parameters.id?html}"<#rt/>
 </#if>
 <#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
-<#if parameters.title??>
+<#if parameters.title?has_content>
  title="${parameters.title?html}"<#rt/>
 </#if>
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/resources/template/simple/form-common.ftl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/template/simple/form-common.ftl 
b/core/src/main/resources/template/simple/form-common.ftl
index a2119b9..262c561 100644
--- a/core/src/main/resources/template/simple/form-common.ftl
+++ b/core/src/main/resources/template/simple/form-common.ftl
@@ -20,48 +20,48 @@
  * under the License.
  */
 -->
-<#if (parameters.validate?default(false) == false)><#rt/>
-    <#if parameters.onsubmit??><#rt/>
+<#if (parameters.validate!false == false)><#rt/>
+    <#if parameters.onsubmit?has_content><#rt/>
         ${tag.addParameter('onsubmit', "${parameters.onsubmit}") }
     </#if>
 </#if>
 <form<#rt/>
-<#if parameters.id??>
+<#if parameters.id?has_content>
  id="${parameters.id?html}"<#rt/>
 </#if>
-<#if parameters.name??>
+<#if parameters.name?has_content>
  name="${parameters.name?html}"<#rt/>
 </#if>
-<#if parameters.onsubmit??>
+<#if parameters.onsubmit?has_content>
  onsubmit="${parameters.onsubmit?html}"<#rt/>
 </#if>
-<#if parameters.onreset??>
+<#if parameters.onreset?has_content>
  onreset="${parameters.onreset?html}"<#rt/>
 </#if>
-<#if parameters.action??>
+<#if parameters.action?has_content>
  action="${parameters.action?html}"<#rt/>
 </#if>
-<#if parameters.target??>
+<#if parameters.target?has_content>
  target="${parameters.target?html}"<#rt/>
 </#if>
-<#if parameters.method??>
+<#if parameters.method?has_content>
  method="${parameters.method?html}"<#rt/>
 <#else>
  method="post"<#rt/>
 </#if>
-<#if parameters.enctype??>
+<#if parameters.enctype?has_content>
  enctype="${parameters.enctype?html}"<#rt/>
 </#if>
-<#if parameters.cssClass??>
+<#if parameters.cssClass?has_content>
  class="${parameters.cssClass?html}"<#rt/>
 </#if>
-<#if parameters.cssStyle??>
+<#if parameters.cssStyle?has_content>
  style="${parameters.cssStyle?html}"<#rt/>
 </#if>
-<#if parameters.title??>
+<#if parameters.title?has_content>
  title="${parameters.title?html}"<#rt/>
 </#if>
-<#if parameters.acceptcharset??>
+<#if parameters.acceptcharset?has_content>
  accept-charset="${parameters.acceptcharset?html}"<#rt/>
 </#if>
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/resources/template/simple/form.ftl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/template/simple/form.ftl 
b/core/src/main/resources/template/simple/form.ftl
index f02eea9..53fb3d5 100644
--- a/core/src/main/resources/template/simple/form.ftl
+++ b/core/src/main/resources/template/simple/form.ftl
@@ -21,7 +21,7 @@
  */
 -->
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/form-common.ftl" />
-<#if parameters.onreset??>
+<#if parameters.onreset?has_content>
  onreset="${parameters.onreset?html}"<#rt/>
 </#if>
->
+>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/resources/template/simple/hidden.ftl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/template/simple/hidden.ftl 
b/core/src/main/resources/template/simple/hidden.ftl
index 4f91237..9ca3fc0 100644
--- a/core/src/main/resources/template/simple/hidden.ftl
+++ b/core/src/main/resources/template/simple/hidden.ftl
@@ -21,20 +21,20 @@
  */
 -->
 <input type="hidden"<#rt/>
- name="${parameters.name?default("")?html}"<#rt/>
+ name="${(parameters.name!"")?html}"<#rt/>
 <#if parameters.nameValue??>
  value="<@s.property value="parameters.nameValue"/>"<#rt/>
 </#if>
-<#if parameters.id??>
+<#if parameters.id?has_content>
  id="${parameters.id?html}"<#rt/>
 </#if>
-<#if parameters.cssClass??>
+<#if parameters.cssClass?has_content>
  class="${parameters.cssClass?html}"<#rt/>
 </#if>
-<#if parameters.cssStyle??>
+<#if parameters.cssStyle?has_content>
  style="${parameters.cssStyle?html}"<#rt/>
 </#if>
-<#if parameters.disabled?default(false)>
+<#if parameters.disabled!false>
  disabled="disabled"<#rt/>
 </#if>
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/resources/template/simple/inputtransferselect.ftl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/template/simple/inputtransferselect.ftl 
b/core/src/main/resources/template/simple/inputtransferselect.ftl
index 610eeb2..ef13ca6 100644
--- a/core/src/main/resources/template/simple/inputtransferselect.ftl
+++ b/core/src/main/resources/template/simple/inputtransferselect.ftl
@@ -33,26 +33,26 @@
 
 
 <input type="text"<#rt/>
- name="${parameters.name?default("")?html}_input"<#rt/>
-<#if parameters.disabled?default(false)>
+ name="${parameters.name!""?html}_input"<#rt/>
+<#if parameters.disabled!false>
  disabled="disabled"<#rt/>
 </#if>
-<#if parameters.readonly?default(false)>
+<#if parameters.readonly!false>
  readonly="readonly"<#rt/>
 </#if>
-<#if parameters.tabindex??>
+<#if parameters.tabindex?has_content>
  tabindex="${parameters.tabindex?html}"<#rt/>
 </#if>
-<#if parameters.id??>
+<#if parameters.id?has_content>
  id="${parameters.id?html}_input"<#rt/>
 </#if>
-<#if parameters.cssClass??>
+<#if parameters.cssClass?has_content>
  class="${parameters.cssClass?html}"<#rt/>
 </#if>
-<#if parameters.cssStyle??>
+<#if parameters.cssStyle?has_content>
  style="${parameters.cssStyle?html}"<#rt/>
 </#if>
-<#if parameters.title??>
+<#if parameters.title?has_content>
  title="${parameters.title?html}"<#rt/>
 </#if>
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
@@ -62,63 +62,63 @@
 
 </td>
 <td valign="middle" align="center">
-       <#assign addLabel=parameters.addLabel?default("->")?html /><#t/>
+       <#assign addLabel=(parameters.addLabel!"->")?html /><#t/>
        <input type="button"
-               <#if parameters.buttonCssClass??><#t/>
+               <#if parameters.buttonCssClass?has_content><#t/>
                 class="${parameters.buttonCssClass?html}"
                </#if><#t/>
-               <#if parameters.buttonCssStyle??>
+               <#if parameters.buttonCssStyle?has_content>
                 style="${parameters.buttonCssStyle?html}"
                </#if><#t/>
                 value="${addLabel}" 
onclick="addOption(document.getElementById('${parameters.id?html}_input'), 
document.getElementById('${parameters.id?html}'))" /><br /><br />
        <#t/>
-       <#assign removeLabel=parameters.removeLabel?default("<-")?html /><#t/>
+       <#assign removeLabel=(parameters.removeLabel!"<-")?html /><#t/>
        <input type="button"
-               <#if parameters.buttonCssClass??><#t/>
+               <#if parameters.buttonCssClass?has_content><#t/>
                 class="${parameters.buttonCssClass?html}"
                </#if><#t/>
-               <#if parameters.buttonCssStyle??>
+               <#if parameters.buttonCssStyle?has_content>
                 style="${parameters.buttonCssStyle?html}"
                </#if><#t/>
                 value="${removeLabel}" 
onclick="removeOptions(document.getElementById('${parameters.id?html}'))" /><br 
/><br />
        <#t/>
-       <#assign removeAllLabel=parameters.removeAllLabel?default("<<--")?html 
/><#t/>
+       <#assign removeAllLabel=(parameters.removeAllLabel!"<<--")?html /><#t/>
        <input type="button"
-                       <#if parameters.buttonCssClass??><#t/>
+                       <#if parameters.buttonCssClass?has_content><#t/>
                 class="${parameters.buttonCssClass?html}"
                </#if><#t/>
-               <#if parameters.buttonCssStyle??>
+               <#if parameters.buttonCssStyle?has_content>
                 style="${parameters.buttonCssStyle?html}"
                </#if><#t/>
                 value="${removeAllLabel}" 
onclick="removeAllOptions(document.getElementById('${parameters.id?html}'))" 
/><br /><br />
 </td>
 <td>
-<#if parameters.rightTitle??><#t/>
+<#if parameters.rightTitle?has_content><#t/>
        <label for="rightTitle">${parameters.rightTitle}</label><br />
 </#if><#t/>
 <#include "/${parameters.templateDir}/simple/select.ftl" />
-<#if parameters.allowUpDown?default(true)>
+<#if parameters.allowUpDown!true>
 <input type="button" 
-<#if parameters.headerKey??>
+<#if parameters.headerKey?has_content>
        onclick="moveOptionDown(document.getElementById('${parameters.id}'), 
'key', '${parameters.headerKey}');"
 <#else>
        onclick="moveOptionDown(document.getElementById('${parameters.id}'), 
'key', '');"
 </#if>
-<#if parameters.downLabel??>
+<#if parameters.downLabel?has_content>
        value="${parameters.downLabel?html}"
 </#if>
 />
 <input type="button" 
-<#if parameters.headerKey??>
+<#if parameters.headerKey?has_content>
        onclick="moveOptionUp(document.getElementById('${parameters.id}'), 
'key', '${parameters.headerKey}');"
 <#else>
        onclick="moveOptionUp(document.getElementById('${parameters.id}'), 
'key', '');"
 </#if>
-<#if parameters.upLabel??>
+<#if parameters.upLabel?has_content>
        value="${parameters.upLabel?html}"
 </#if>
 />
 </#if>
 </td>
 </tr>
-</table>
+</table>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/resources/template/simple/label.ftl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/template/simple/label.ftl 
b/core/src/main/resources/template/simple/label.ftl
index 53524d4..7eb923c 100644
--- a/core/src/main/resources/template/simple/label.ftl
+++ b/core/src/main/resources/template/simple/label.ftl
@@ -21,19 +21,19 @@
  */
 -->
 <label<#rt/>
-<#if parameters.id??>
+<#if parameters.id?has_content>
  id="${parameters.id?html}"<#rt/>
 </#if>
-<#if parameters.cssClass??>
+<#if parameters.cssClass?has_content>
  class="${parameters.cssClass?html}"<#rt/>
 </#if>
-<#if parameters.cssStyle??>
+<#if parameters.cssStyle?has_content>
  style="${parameters.cssStyle?html}"<#rt/>
 </#if>
-<#if parameters.title??>
+<#if parameters.title?has_content>
  title="${parameters.title?html}"<#rt/>
 </#if>
-<#if parameters.for??>
+<#if parameters.for?has_content>
  for="${parameters.for?html}"<#rt/>
 </#if>
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
@@ -42,4 +42,4 @@
 <#if parameters.nameValue??>
 <@s.property value="parameters.nameValue"/><#t/>
 </#if>
-</label>
+</label>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/resources/template/simple/optgroup.ftl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/template/simple/optgroup.ftl 
b/core/src/main/resources/template/simple/optgroup.ftl
index 6d503b7..8f704f2 100644
--- a/core/src/main/resources/template/simple/optgroup.ftl
+++ b/core/src/main/resources/template/simple/optgroup.ftl
@@ -24,10 +24,10 @@
 <#assign optGroupInternalListUiBeans=parameters.optGroupInternalListUiBeanList 
/>
 <#list optGroupInternalListUiBeans as optGroupInternalListUiBean>
 <optgroup 
-       <#if optGroupInternalListUiBean.parameters.label??>
+       <#if optGroupInternalListUiBean.parameters.label?has_content>
        label="${optGroupInternalListUiBean.parameters.label}"
        </#if>
-       <#if optGroupInternalListUiBean.parameters.disabled?default(false)>
+       <#if optGroupInternalListUiBean.parameters.disabled!false>
        disabled="disabled"
        </#if>
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/resources/template/simple/password.ftl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/template/simple/password.ftl 
b/core/src/main/resources/template/simple/password.ftl
index b036b92..9e1f095 100644
--- a/core/src/main/resources/template/simple/password.ftl
+++ b/core/src/main/resources/template/simple/password.ftl
@@ -21,30 +21,30 @@
  */
 -->
 <input type="password"<#rt/>
- name="${parameters.name?default("")?html}"<#rt/>
-<#if parameters.get("size")??>
+ name="${(parameters.name!"")?html}"<#rt/>
+<#if parameters.get("size")?has_content>
  size="${parameters.get("size")?html}"<#rt/>
 </#if>
-<#if parameters.maxlength??>
+<#if parameters.maxlength?has_content>
  maxlength="${parameters.maxlength?html}"<#rt/>
 </#if>
-<#if parameters.nameValue?? && parameters.showPassword?default(false)>
+<#if parameters.nameValue?? && parameters.showPassword!false>
  value="<@s.property value="parameters.nameValue"/>"<#rt/>
 </#if>
-<#if parameters.disabled?default(false)>
+<#if parameters.disabled!false>
  disabled="disabled"<#rt/>
 </#if>
-<#if parameters.readonly?default(false)>
+<#if parameters.readonly!false>
  readonly="readonly"<#rt/>
 </#if>
-<#if parameters.tabindex??>
+<#if parameters.tabindex?has_content>
  tabindex="${parameters.tabindex?html}"<#rt/>
 </#if>
-<#if parameters.id??>
+<#if parameters.id?has_content>
  id="${parameters.id?html}"<#rt/>
 </#if>
 <#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
-<#if parameters.title??>
+<#if parameters.title?has_content>
  title="${parameters.title?html}"<#rt/>
 </#if>
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/resources/template/simple/radiomap.ftl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/template/simple/radiomap.ftl 
b/core/src/main/resources/template/simple/radiomap.ftl
index 34cf1b1..6d15e69 100644
--- a/core/src/main/resources/template/simple/radiomap.ftl
+++ b/core/src/main/resources/template/simple/radiomap.ftl
@@ -54,32 +54,35 @@
         </#if>
     </#if>
 <input type="radio"<#rt/>
-<#if parameters.name??>
+<#if parameters.name?has_content>
  name="${parameters.name?html}"<#rt/>
 </#if>
  id="${parameters.id?html}${itemKeyStr?html}"<#rt/>
-<#if tag.contains(parameters.nameValue?default(''), itemKeyStr)>
+<#if tag.contains(parameters.nameValue!'', itemKeyStr)>
  checked="checked"<#rt/>
 </#if>
 <#if itemKey??>
  value="${itemKeyStr?html}"<#rt/>
 </#if>
-<#if parameters.disabled?default(false)>
+<#if parameters.disabled!false>
  disabled="disabled"<#rt/>
 </#if>
-<#if parameters.tabindex??>
+<#if parameters.readonly!false>
+ readonly="readonly"<#rt/>
+</#if>
+<#if parameters.tabindex?has_content>
  tabindex="${parameters.tabindex?html}"<#rt/>
 </#if>
-<#if itemCssClass?if_exists != "">
+<#if itemCssClass?has_content>
  class="${itemCssClass?html}"<#rt/>
 </#if>
-<#if itemCssStyle?if_exists != "">
+<#if itemCssStyle?has_content>
  style="${itemCssStyle?html}"<#rt/>
 </#if>
-<#if itemTitle?if_exists != "">
+<#if itemTitle?has_content>
  title="${itemTitle?html}"<#rt/>
 <#else>
-    <#if parameters.title??>
+    <#if parameters.title?has_content>
  title="${parameters.title?html}"<#rt/>
     </#if>
 </#if>

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/resources/template/simple/reset.ftl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/template/simple/reset.ftl 
b/core/src/main/resources/template/simple/reset.ftl
index 0ddba57..7e7481f 100644
--- a/core/src/main/resources/template/simple/reset.ftl
+++ b/core/src/main/resources/template/simple/reset.ftl
@@ -22,51 +22,51 @@
 -->
 <#if parameters.type?? && parameters.type=="button">
 <button type="reset"<#rt/>
-<#if parameters.name??>
+<#if parameters.name?has_content>
  name="${parameters.name?html}"<#rt/>
 </#if>
 <#if parameters.nameValue??>
  value="<@s.property value="parameters.nameValue"/>"<#rt/>
 </#if>
-<#if parameters.cssClass??>
+<#if parameters.cssClass?has_content>
  class="${parameters.cssClass?html}"<#rt/>
 </#if>
-<#if parameters.cssStyle??>
+<#if parameters.cssStyle?has_content>
  style="${parameters.cssStyle?html}"<#rt/>
 </#if>
-<#if parameters.disabled?default(false)>
+<#if parameters.disabled!false>
  disabled="disabled"<#rt/>
 </#if>
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl"/>
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
-><#if parameters.src??>
+><#if parameters.src?has_content>
 <img<#rt/>
-<#if parameters.label??>
+<#if parameters.label?has_content>
  alt="${parameters.label?html}"<#rt/>
 </#if>
-<#if parameters.src??>
+<#if parameters.src?has_content>
  src="${parameters.src?html}"<#rt/>
 </#if>
-/><#else><#if parameters.label??><@s.property 
value="parameters.label"/><#rt/></#if></#if></button>
+/><#else><#if parameters.label?has_content><@s.property 
value="parameters.label"/><#rt/></#if></#if></button>
 <#else>
 <input type="reset"<#rt/>
-<#if parameters.name??>
+<#if parameters.name?has_content>
  name="${parameters.name?html}"<#rt/>
 </#if>
 <#if parameters.nameValue??>
  value="<@s.property value="parameters.nameValue"/>"<#rt/>
 </#if>
-<#if parameters.cssClass??>
+<#if parameters.cssClass?has_content>
  class="${parameters.cssClass?html}"<#rt/>
 </#if>
-<#if parameters.cssStyle??>
+<#if parameters.cssStyle?has_content>
  style="${parameters.cssStyle?html}"<#rt/>
 </#if>
-<#if parameters.title??>
+<#if parameters.title?has_content>
  title="${parameters.title?html}"<#rt/>
 </#if>
-<#if parameters.disabled?default(false)>
+<#if parameters.disabled!false>
  disabled="disabled"<#rt/>
 </#if>
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/resources/template/simple/select.ftl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/template/simple/select.ftl 
b/core/src/main/resources/template/simple/select.ftl
index 74277e6..73f3d36 100644
--- a/core/src/main/resources/template/simple/select.ftl
+++ b/core/src/main/resources/template/simple/select.ftl
@@ -22,24 +22,24 @@
 -->
 <#setting number_format="#.#####">
 <select<#rt/>
- name="${parameters.name?default("")?html}"<#rt/>
-<#if parameters.get("size")??>
+ name="${(parameters.name!"")?html}"<#rt/>
+<#if parameters.get("size")?has_content>
  size="${parameters.get("size")?html}"<#rt/>
 </#if>
-<#if parameters.disabled?default(false)>
+<#if parameters.disabled!false>
  disabled="disabled"<#rt/>
 </#if>
-<#if parameters.tabindex??>
+<#if parameters.tabindex?has_content>
  tabindex="${parameters.tabindex?html}"<#rt/>
 </#if>
-<#if parameters.id??>
+<#if parameters.id?has_content>
  id="${parameters.id?html}"<#rt/>
 </#if>
 <#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
-<#if parameters.title??>
+<#if parameters.title?has_content>
  title="${parameters.title?html}"<#rt/>
 </#if>
-<#if parameters.multiple?default(false)>
+<#if parameters.multiple!false>
  multiple="multiple"<#rt/>
 </#if>
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
@@ -53,7 +53,7 @@
     </#if>
     >${parameters.headerValue?html}</option>
 </#if>
-<#if parameters.emptyOption?default(false)>
+<#if parameters.emptyOption!false>
     <option value=""></option>
 </#if>
 <@s.iterator value="parameters.list">
@@ -103,13 +103,13 @@
         <#if tag.contains(parameters.nameValue, itemKey) == true>
  selected="selected"<#rt/>
         </#if>
-        <#if itemCssClass?if_exists != "">
+        <#if itemCssClass?has_content>
  class="${itemCssClass?html}"<#rt/>
         </#if>
-        <#if itemCssStyle?if_exists != "">
+        <#if itemCssStyle?has_content>
  style="${itemCssStyle?html}"<#rt/>
         </#if>
-        <#if itemTitle?if_exists != "">
+        <#if itemTitle?has_content>
  title="${itemTitle?html}"<#rt/>
         </#if>
     >${itemValue?html}</option><#lt/>
@@ -119,7 +119,7 @@
 
 </select>
 
-<#if parameters.multiple?default(false)>
+<#if parameters.multiple!false>
   <#if (parameters.id?? && parameters.name??)>
     <input type="hidden" id="__multiselect_${parameters.id?html}" 
name="__multiselect_${parameters.name?html}" value=""<#rt/>
   </#if>
@@ -133,8 +133,8 @@
      <input type="hidden" id="" name="" value="" <#rt/>
   </#if>
   
-<#if parameters.disabled?default(false)>
+<#if parameters.disabled!false>
  disabled="disabled"<#rt/>
 </#if>
  />
-</#if>
+</#if>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/resources/template/simple/submit.ftl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/template/simple/submit.ftl 
b/core/src/main/resources/template/simple/submit.ftl
index 95315ef..24db4a8 100644
--- a/core/src/main/resources/template/simple/submit.ftl
+++ b/core/src/main/resources/template/simple/submit.ftl
@@ -22,28 +22,28 @@
 -->
 <#if parameters.type?? && parameters.type=="button">
 <button type="submit"<#rt/>
-<#if parameters.id??>
+<#if parameters.id?has_content>
  id="${parameters.id?html}"<#rt/>
 </#if>
-<#if parameters.name??>
+<#if parameters.name?has_content>
  name="${parameters.name?html}"<#rt/>
 </#if>
 <#if parameters.nameValue??>
  value="<@s.property value="parameters.nameValue"/>"<#rt/>
 </#if>
-<#if parameters.disabled?default(false)>
+<#if parameters.disabled!false>
  disabled="disabled"<#rt/>
 </#if>
-<#if parameters.cssClass??>
+<#if parameters.cssClass?has_content>
  class="${parameters.cssClass?html}"<#rt/>
 </#if>
-<#if parameters.cssStyle??>
+<#if parameters.cssStyle?has_content>
  style="${parameters.cssStyle?html}"<#rt/>
 </#if>
-<#if parameters.title??>
+<#if parameters.title?has_content>
  title="${parameters.title?html}"<#rt/>
 </#if>
-<#if parameters.tabindex??>
+<#if parameters.tabindex?has_content>
  tabindex="${parameters.tabindex?html}"<#rt/>
 </#if>
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl"/>
@@ -53,37 +53,37 @@
 <#else>
 <#if parameters.type?? && parameters.type=="image">
 <input type="image"<#rt/>
-<#if parameters.label??>
+<#if parameters.label?has_content>
  alt="${parameters.label?html}"<#rt/>
 </#if>
-<#if parameters.src??>
+<#if parameters.src?has_content>
  src="${parameters.src?html}"<#rt/>
 </#if>
 <#else>
 <input type="submit"<#rt/>
 </#if>
-<#if parameters.id??>
+<#if parameters.id?has_content>
  id="${parameters.id?html}"<#rt/>
 </#if>
-<#if parameters.name??>
+<#if parameters.name?has_content>
  name="${parameters.name?html}"<#rt/>
 </#if>
-<#if parameters.nameValue??>
+<#if parameters.nameValue?has_content>
  value="<@s.property value="parameters.nameValue"/>"<#rt/>
 </#if>
-<#if parameters.disabled?default(false)>
+<#if parameters.disabled!false>
  disabled="disabled"<#rt/>
 </#if>
-<#if parameters.cssClass??>
+<#if parameters.cssClass?has_content>
  class="${parameters.cssClass?html}"<#rt/>
 </#if>
-<#if parameters.cssStyle??>
+<#if parameters.cssStyle?has_content>
  style="${parameters.cssStyle?html}"<#rt/>
 </#if>
-<#if parameters.title??>
+<#if parameters.title?has_content>
  title="${parameters.title?html}"<#rt/>
 </#if>
-<#if parameters.tabindex??>
+<#if parameters.tabindex?has_content>
  tabindex="${parameters.tabindex?html}"<#rt/>
 </#if>
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/resources/template/simple/text.ftl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/template/simple/text.ftl 
b/core/src/main/resources/template/simple/text.ftl
index 1caf3aa..775e196 100644
--- a/core/src/main/resources/template/simple/text.ftl
+++ b/core/src/main/resources/template/simple/text.ftl
@@ -21,31 +21,31 @@
  */
 -->
 <input<#rt/>
- type="${parameters.type?default("text")?html}"<#rt/>
- name="${parameters.name?default("")?html}"<#rt/>
-<#if parameters.get("size")??>
+ type="${(parameters.type!"text")?html}"<#rt/>
+ name="${(parameters.name!"")?html}"<#rt/>
+<#if parameters.get("size")?has_content>
  size="${parameters.get("size")?html}"<#rt/>
 </#if>
-<#if parameters.maxlength??>
+<#if parameters.maxlength?has_content>
  maxlength="${parameters.maxlength?html}"<#rt/>
 </#if>
 <#if parameters.nameValue??>
  value="${parameters.nameValue?html}"<#rt/>
 </#if>
-<#if parameters.disabled?default(false)>
+<#if parameters.disabled!false>
  disabled="disabled"<#rt/>
 </#if>
-<#if parameters.readonly?default(false)>
+<#if parameters.readonly!false>
  readonly="readonly"<#rt/>
 </#if>
-<#if parameters.tabindex??>
+<#if parameters.tabindex?has_content>
  tabindex="${parameters.tabindex?html}"<#rt/>
 </#if>
-<#if parameters.id??>
+<#if parameters.id?has_content>
  id="${parameters.id?html}"<#rt/>
 </#if>
 <#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
-<#if parameters.title??>
+<#if parameters.title?has_content>
  title="${parameters.title?html}"<#rt/>
 </#if>
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/main/resources/template/simple/textarea.ftl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/template/simple/textarea.ftl 
b/core/src/main/resources/template/simple/textarea.ftl
index 6cf1e9b..4d4308c 100644
--- a/core/src/main/resources/template/simple/textarea.ftl
+++ b/core/src/main/resources/template/simple/textarea.ftl
@@ -21,26 +21,26 @@
  */
 -->
 <textarea<#rt/>
- name="${parameters.name?default("")?html}"<#rt/>
- cols="${parameters.cols?default("")?html}"<#rt/>
- rows="${parameters.rows?default("")?html}"<#rt/>
-<#if parameters.wrap??>
+ name="${(parameters.name!"")?html}"<#rt/>
+ cols="${(parameters.cols!"")?html}"<#rt/>
+ rows="${(parameters.rows!"")?html}"<#rt/>
+<#if parameters.wrap?has_content>
  wrap="${parameters.wrap?html}"<#rt/>
 </#if>
-<#if parameters.disabled?default(false)>
+<#if parameters.disabled!false>
  disabled="disabled"<#rt/>
 </#if>
-<#if parameters.readonly?default(false)>
+<#if parameters.readonly!false>
  readonly="readonly"<#rt/>
 </#if>
-<#if parameters.tabindex??>
+<#if parameters.tabindex?has_content>
  tabindex="${parameters.tabindex?html}"<#rt/>
 </#if>
-<#if parameters.id??>
+<#if parameters.id?has_content>
  id="${parameters.id?html}"<#rt/>
 </#if>
 <#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
-<#if parameters.title??>
+<#if parameters.title?has_content>
  title="${parameters.title?html}"<#rt/>
 </#if>
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
@@ -50,4 +50,4 @@
 <#if parameters.nameValue??>
 <@s.property value="parameters.nameValue"/><#t/>
 </#if>
-</textarea>
+</textarea>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/site/resources/tags/checkbox.html
----------------------------------------------------------------------
diff --git a/core/src/site/resources/tags/checkbox.html 
b/core/src/site/resources/tags/checkbox.html
index 34ba9dd..8fd7fe3 100644
--- a/core/src/site/resources/tags/checkbox.html
+++ b/core/src/site/resources/tags/checkbox.html
@@ -266,6 +266,14 @@ Please do not edit it directly.
                                        <td align="left" valign="top">Set the 
html onselect attribute on rendered html element</td>
                                </tr>
                                <tr>
+                                       <td align="left" 
valign="top">readonly</td>
+                                       <td align="left" valign="top">false</td>
+                                       <td align="left" valign="top">false</td>
+                                       <td align="left" valign="top">false</td>
+                                       <td align="left" 
valign="top">Boolean</td>
+                                       <td align="left" valign="top">Whether 
the input is readonly</td>
+                               </tr>
+                               <tr>
                                        <td align="left" 
valign="top">requiredLabel</td>
                                        <td align="left" valign="top">false</td>
                                        <td align="left" valign="top">false</td>

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/site/resources/tags/checkboxlist.html
----------------------------------------------------------------------
diff --git a/core/src/site/resources/tags/checkboxlist.html 
b/core/src/site/resources/tags/checkboxlist.html
index ae49b2b..01f3feb 100644
--- a/core/src/site/resources/tags/checkboxlist.html
+++ b/core/src/site/resources/tags/checkboxlist.html
@@ -306,6 +306,14 @@ Please do not edit it directly.
                                        <td align="left" valign="top">Set the 
html onselect attribute on rendered html element</td>
                                </tr>
                                <tr>
+                                       <td align="left" 
valign="top">readonly</td>
+                                       <td align="left" valign="top">false</td>
+                                       <td align="left" valign="top">false</td>
+                                       <td align="left" valign="top">false</td>
+                                       <td align="left" 
valign="top">Boolean</td>
+                                       <td align="left" valign="top">Whether 
the input is readonly</td>
+                               </tr>
+                               <tr>
                                        <td align="left" 
valign="top">requiredLabel</td>
                                        <td align="left" valign="top">false</td>
                                        <td align="left" valign="top">false</td>

http://git-wip-us.apache.org/repos/asf/struts/blob/1dcf5853/core/src/site/resources/tags/radio.html
----------------------------------------------------------------------
diff --git a/core/src/site/resources/tags/radio.html 
b/core/src/site/resources/tags/radio.html
index f3e8abc..1ee168d 100644
--- a/core/src/site/resources/tags/radio.html
+++ b/core/src/site/resources/tags/radio.html
@@ -306,6 +306,14 @@ Please do not edit it directly.
                                        <td align="left" valign="top">Set the 
html onselect attribute on rendered html element</td>
                                </tr>
                                <tr>
+                                       <td align="left" 
valign="top">readonly</td>
+                                       <td align="left" valign="top">false</td>
+                                       <td align="left" valign="top">false</td>
+                                       <td align="left" valign="top">false</td>
+                                       <td align="left" 
valign="top">Boolean</td>
+                                       <td align="left" valign="top">Whether 
the input is readonly</td>
+                               </tr>
+                               <tr>
                                        <td align="left" 
valign="top">requiredLabel</td>
                                        <td align="left" valign="top">false</td>
                                        <td align="left" valign="top">false</td>

Reply via email to