You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2016/01/27 10:26:52 UTC

svn commit: r978711 [5/5] - /websites/production/struts/content/docs/

Modified: websites/production/struts/content/docs/version-notes-25.html
==============================================================================
--- websites/production/struts/content/docs/version-notes-25.html (original)
+++ websites/production/struts/content/docs/version-notes-25.html Wed Jan 27 09:26:50 2016
@@ -155,7 +155,7 @@ under the License.
     <url>https://repository.apache.org/content/groups/staging/</url>
   </repository>
 &lt;/repositories&gt;</pre>
-</div></div><h2 id="VersionNotes2.5-InternalChanges">Internal Changes</h2><ul><li>XWork source was merged into Struts Core source, it means that there be no more&#160;<code>xwork</code> artifact nor dedicated jar</li><li>OGNL was upgraded to version 3.0.11 and it breaks access to properties as it follows Java Bean Specification, see&#160;<a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4207">WW-4207</a> and&#160;<a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-3909">WW-3909</a></li><li>Spring dependency for tests and spring plugin was upgraded to version&#160;4.1.6, see <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4510">WW-4510</a>.</li><li>Struts2 internal logging api was marked as deprecated and was replaced with new&#160;<a shape="rect" class="external-link" href="http://logging.apache.org/log4j/2.x/">Log4j2</a>&#160;api as logging layer, see <a shape="rect" class="exte
 rnal-link" href="https://issues.apache.org/jira/browse/WW-4504">WW-4504</a>.</li><li>Struts2 is now build with JDK7, see <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4503">WW-4503</a>.</li><li>New plugin to support <a shape="rect" href="https://cwiki.apache.org/confluence/display/WW/Bean+Validation+Plugin">bean validation</a> is now part of the distribution, see <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4505">WW-4505</a>.</li><li>Deprecated plugins are now removed from the distribution and are not longer supported anymore.<ul><li>Dojo Plugin</li><li>Codebehind Plugin</li><li>JSF Plugin</li><li>Struts1 Plugin</li></ul></li><li>New security option was added - Strict Method Invocation (also known as Strict DMI), see <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4540">WW-4540</a></li><li>Add support for latest stable AngularJS in Maven&#160;archetype, see <a shape="r
 ect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4522">WW-4522</a></li></ul><h2 id="VersionNotes2.5-IssueDetail"><span style="font-size: 16.0px;line-height: 1.5625;">Issue Detail</span></h2><ul><li><a shape="rect" class="external-link" href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12331974&amp;projectId=12311041">JIRA Release Notes 2.3.24</a>&#160;- TBU</li></ul><h3 id="VersionNotes2.5-IssueList">Issue List</h3><ul><li><a shape="rect" class="external-link" href="https://issues.apache.org/jira/issues/?filter=12330045">Struts 2.3.24 DONE</a>&#160;- TBU</li><li><a shape="rect" class="external-link" href="https://issues.apache.org/jira/issues/?filter=12318399">Struts 2.3.x TODO</a>&#160;- TBU</li></ul><h3 id="VersionNotes2.5-Otherresources">Other resources</h3><ul><li><a shape="rect" class="external-link" href="http://www.mail-archive.com/commits%40struts.apache.org/" rel="nofollow">Commit Logs</a></li><li><a shape="rect" class="external-l
 ink" href="https://git-wip-us.apache.org/repos/asf?p=struts.git;a=tree;h=refs/heads/develop;hb=develop">Source Code Repository</a></li></ul><div><span style="font-size: 24.0px;line-height: 30.0px;"><br clear="none"></span></div><div><span style="font-size: 24.0px;line-height: 30.0px;background-color: rgb(245,245,245);"><br clear="none"></span></div></div>
+</div></div><h2 id="VersionNotes2.5-InternalChanges">Internal Changes</h2><ul><li>XWork source was merged into Struts Core source, it means that there be no more&#160;<code>xwork</code> artifact nor dedicated jar</li><li><span style="line-height: 1.42857;">Spring dependency for tests and spring plugin was upgraded to version&#160;4.1.6, see </span><a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4510" style="line-height: 1.42857;">WW-4510</a><span style="line-height: 1.42857;">.</span></li><li>Struts2 internal logging api was marked as deprecated and was replaced with new&#160;<a shape="rect" class="external-link" href="http://logging.apache.org/log4j/2.x/">Log4j2</a>&#160;api as logging layer, see <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4504">WW-4504</a>.</li><li>Struts2 is now build with JDK7, see <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4503">WW-4503</a>.</
 li><li>New plugin to support <a shape="rect" href="https://cwiki.apache.org/confluence/display/WW/Bean+Validation+Plugin">bean validation</a> is now part of the distribution, see <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4505">WW-4505</a>.</li><li>Deprecated plugins are now removed from the distribution and are not longer supported anymore.<ul><li>Dojo Plugin</li><li>Codebehind Plugin</li><li>JSF Plugin</li><li>Struts1 Plugin</li></ul></li><li>New security option was added - Strict Method Invocation (also known as Strict DMI), see <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4540">WW-4540</a></li><li>Added support for latest stable AngularJS in Maven&#160;archetype, see <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4522">WW-4522</a></li><li>Dropped support for&#160;<code>id</code> and&#160;<code>name</code> - replaced with&#160;<code>var</code>, see&#160;<a shape
 ="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-2069">WW-2069</a></li><li>Dedicated archive with a minimal set of dependencies was introduced, see&#160;<a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4570">WW-4570</a></li><li>It is possible to use multiple names when defining a result, see&#160;<a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4590">WW-4590</a></li><li>Rest plugin honors Accept header, see&#160;<a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4588">WW-4588</a></li><li><p>New result 'JSONActionRedirectResult' in json-plugin was defined, see&#160;<a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4591">WW-4591</a></p></li><li>Tiles plugin was upgrade to the latest Tiles 3 and tiles3-plugin was dropped, see&#160;<a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4584"
 >WW-4584</a></li><li>JasperReports plugins was upgraded to JasperReport 6.0, see&#160;<a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4381">WW-4381</a></li><li>OGNL was upgraded to version 3.0.11 and it breaks access to properties as it follows Java Bean Specification, see&#160;<a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4207">WW-4207</a>&#160;and&#160;<a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-3909">WW-3909</a><ul><li>and then OGNL was upgraded to version 3.1.1, see&#160;<a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4561">WW-4561</a></li><li>and then OGNL was upgraded to version 3.2.1, see&#160;<a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW-4577">WW-4577</a></li></ul></li></ul><h2 id="VersionNotes2.5-IssueDetail"><span style="font-size: 16.0px;line-height: 1.5625;">Issue Detail</span></h2
 ><ul><li><a shape="rect" class="external-link" href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12331974&amp;projectId=12311041">JIRA Release Notes 2.3.24</a>&#160;- TBU</li></ul><h3 id="VersionNotes2.5-IssueList">Issue List</h3><ul><li><a shape="rect" class="external-link" href="https://issues.apache.org/jira/issues/?filter=12330045">Struts 2.3.24 DONE</a>&#160;- TBU</li><li><a shape="rect" class="external-link" href="https://issues.apache.org/jira/issues/?filter=12318399">Struts 2.3.x TODO</a>&#160;- TBU</li></ul><h3 id="VersionNotes2.5-Otherresources">Other resources</h3><ul><li><a shape="rect" class="external-link" href="http://www.mail-archive.com/commits%40struts.apache.org/" rel="nofollow">Commit Logs</a></li><li><a shape="rect" class="external-link" href="https://git-wip-us.apache.org/repos/asf?p=struts.git;a=tree;h=refs/heads/develop;hb=develop">Source Code Repository</a></li></ul><div><span style="font-size: 24.0px;line-height: 30.0px;"><br clear="none"
 ></span></div><div><span style="font-size: 24.0px;line-height: 30.0px;background-color: rgb(245,245,245);"><br clear="none"></span></div></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/webxml.html
==============================================================================
--- websites/production/struts/content/docs/webxml.html (original)
+++ websites/production/struts/content/docs/webxml.html Wed Jan 27 09:26:50 2016
@@ -146,7 +146,7 @@ under the License.
 
     &lt;filter&gt;
         &lt;filter-name&gt;struts2&lt;/filter-name&gt;
-        &lt;filter-class&gt;org.apache.struts2.dispatcher.filter.ng.StrutsPrepareAndExecuteFilter&lt;/filter-class&gt;
+        &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&lt;/filter-class&gt;
     &lt;/filter&gt;
 
     &lt;filter-mapping&gt;
@@ -195,7 +195,7 @@ under the License.
 </div></div><h2 id="web.xml-CustomFileManagerandFileManagerFactoryimplementations">Custom FileManager and FileManagerFactory implementations</h2><p>If there is a need to support an App Server's specific file system (eg. VFS in JBoss), you can implement your own version of FileManager. But it must be registered at "the beginning" to support bootstrap of the whole framework.</p><p>To register your own FileManger you can do it with &lt;init-param/&gt; as below:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">&lt;filter&gt;
      &lt;filter-name&gt;struts2&lt;/filter-name&gt;
-     &lt;filter-class&gt;org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter&lt;/filter-class&gt;
+     &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&lt;/filter-class&gt;
      &lt;init-param&gt;
          &lt;param-name&gt;struts.fileManager&lt;/param-name&gt;
          &lt;param-value&gt;com.company.MyFileManager&lt;/param-value&gt;
@@ -205,7 +205,7 @@ under the License.
 </div></div><p>You can as well register your own FileManagerFactory with &lt;init-param/&gt;, see example:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">&lt;filter&gt;
      &lt;filter-name&gt;struts2&lt;/filter-name&gt;
-     &lt;filter-class&gt;org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter&lt;/filter-class&gt;
+     &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&lt;/filter-class&gt;
      &lt;init-param&gt;
          &lt;param-name&gt;struts.fileManagerFactory&lt;/param-name&gt;
          &lt;param-value&gt;com.company.MyFileManagerFactory&lt;/param-value&gt;

Modified: websites/production/struts/content/docs/wildcard-method-selection.html
==============================================================================
--- websites/production/struts/content/docs/wildcard-method-selection.html (original)
+++ websites/production/struts/content/docs/wildcard-method-selection.html Wed Jan 27 09:26:50 2016
@@ -157,7 +157,7 @@ under the License.
 &lt;/action&gt;
 
 </pre>
-</div></div><p>The * is the wildcard character. Any action name values that end in "Person" will be handled by this action mapping. Whatever value is before "Person" will be the value used for the method attribute (the {1} place holder will be replaced with that value). For example this URL:</p><p><a shape="rect" class="external-link" href="http://localhost:8080/wildcard_method_selection/createPerson.action" rel="nofollow">http://localhost:8080/wildcard_method_selection/createPerson.action</a></p><p>will be be processed by the the above action mapping and method create of class PersonAction will be called. While this URL</p><p><a shape="rect" class="external-link" href="http://localhost:8080/wildcard_method_selection/deletePerson.action" rel="nofollow">http://localhost:8080/wildcard_method_selection/deletePerson.action</a></p><p>will cause the delete method of class PersonAction to be called.</p><p>What happens if we have a URL with nothing in front of Person? For example:</p><p><a 
 shape="rect" class="external-link" href="http://localhost:8080/wildcard_method_selection/Person.action" rel="nofollow">http://localhost:8080/wildcard_method_selection/Person.action</a></p><p>If there is no value in front of Person, then the Struts 2 framework will call the execute method of the class PersonAction.</p><h3 id="WildcardMethodSelection-DynamicMethodInvocation">Dynamic Method Invocation</h3><p>The wildcard method selection technique explained above should not be confused with the "Dynamic Method Invocation" technique. The Struts 2 documentation explains this technique (which uses the bang, !, operator in the action name) and recommends against using the "Dynamic Method Invocation" technique due to security and other reasons related to how this technique is implemented internally.</p><p>The Struts 2 documentation also recommends turning off the option to use the dynamic method invocation by setting struts.enable.DynamicMethodInvocation to FALSE in the Struts configuration
 .</p><h3 id="WildcardMethodSelection-Summary">Summary</h3><p>By using the wildcard method selection technique explained above, you can significantly reduce the number of action mapping nodes you need to write and manage in the Struts 2 XML configuration file.</p><h3 id="WildcardMethodSelection-UpNext">Up Next</h3><p>In our next tutorial we'll cover how control the appearance of the Struts 2 tags when they are rendered in the browser.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Next</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Onward to <a shape="rect" href="struts-2-themes.html">Struts 2 Themes</a></p></td></tr></tbody></table></div></div>
+</div></div><p>The * is the wildcard character. Any action name values that end in "Person" will be handled by this action mapping. Whatever value is before "Person" will be the value used for the method attribute (the {1} place holder will be replaced with that value). For example this URL:</p><p><a shape="rect" class="external-link" href="http://localhost:8080/wildcard-method-selection/createPerson.action" rel="nofollow">http://localhost:8080/wildcard-method-selection/createPerson.action</a></p><p>will be be processed by the the above action mapping and method create of class PersonAction will be called. While this URL</p><p><a shape="rect" class="external-link" href="http://localhost:8080/wildcard-method-selection/deletePerson.action" rel="nofollow">http://localhost:8080/wildcard-method-selection/deletePerson.action</a></p><p>will cause the delete method of class PersonAction to be called.</p><p>What happens if we have a URL with nothing in front of Person? For example:</p><p><a 
 shape="rect" class="external-link" href="http://localhost:8080/wildcard-method-selection/Person.action" rel="nofollow">http://localhost:8080/wildcard-method-selection/Person.action</a></p><p>If there is no value in front of Person, then the Struts 2 framework will call the execute method of the class PersonAction.</p><h3 id="WildcardMethodSelection-DynamicMethodInvocation">Dynamic Method Invocation</h3><p>The wildcard method selection technique explained above should not be confused with the "Dynamic Method Invocation" technique. The Struts 2 documentation explains this technique (which uses the bang, !, operator in the action name) and recommends against using the "Dynamic Method Invocation" technique due to security and other reasons related to how this technique is implemented internally.</p><p>The Struts 2 documentation also recommends turning off the option to use the dynamic method invocation by setting struts.enable.DynamicMethodInvocation to FALSE in the Struts configuration
 .</p><h3 id="WildcardMethodSelection-Summary">Summary</h3><p>By using the wildcard method selection technique explained above, you can significantly reduce the number of action mapping nodes you need to write and manage in the Struts 2 XML configuration file.</p><h3 id="WildcardMethodSelection-UpNext">Up Next</h3><p>In our next tutorial we'll cover how control the appearance of the Struts 2 tags when they are rendered in the browser.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Next</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Onward to <a shape="rect" href="struts-2-themes.html">Struts 2 Themes</a></p></td></tr></tbody></table></div></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/xhtml-form-template.html
==============================================================================
--- websites/production/struts/content/docs/xhtml-form-template.html (original)
+++ websites/production/struts/content/docs/xhtml-form-template.html Wed Jan 27 09:26:50 2016
@@ -166,8 +166,8 @@ under the License.
 --&gt;
 &lt;#include &quot;/${parameters.templateDir}/${parameters.expandTheme}/form-validate.ftl&quot; /&gt;
 &lt;#include &quot;/${parameters.templateDir}/${parameters.expandTheme}/form-common.ftl&quot; /&gt;
-&lt;#if (parameters.validate?default(false))&gt;
-  onreset=&quot;${parameters.onreset?default(&#39;clearErrorMessages(this);clearErrorLabels(this);&#39;)}&quot;
+&lt;#if (parameters.validate!false)&gt;
+  onreset=&quot;${parameters.onreset!&#39;clearErrorMessages(this);clearErrorLabels(this);&#39;}&quot;
 &lt;#else&gt;
   &lt;#if parameters.onreset??&gt;
   onreset=&quot;${parameters.onreset?html}&quot;
@@ -207,7 +207,7 @@ under the License.
 &lt;#include &quot;/${parameters.templateDir}/${parameters.expandTheme}/control-close.ftl&quot; /&gt;
 &lt;#include &quot;/${parameters.templateDir}/simple/form-close.ftl&quot; /&gt;
 &lt;#include &quot;/${parameters.templateDir}/${parameters.expandTheme}/form-close-validate.ftl&quot; /&gt;
-&lt;#if parameters.focusElement?if_exists != &quot;&quot;&gt;
+&lt;#if parameters.focusElement??&gt;
 &lt;script type=&quot;text/javascript&quot;&gt;
     StrutsUtils.addOnLoad(function() {
         var element = document.getElementById(&quot;${parameters.focusElement?html}&quot;);

Modified: websites/production/struts/content/docs/xhtml-theme.html
==============================================================================
--- websites/production/struts/content/docs/xhtml-theme.html (original)
+++ websites/production/struts/content/docs/xhtml-theme.html Wed Jan 27 09:26:50 2016
@@ -238,7 +238,7 @@ under the License.
 	This will be done if ActionSupport is used.
 --&gt;
 &lt;#assign hasFieldErrors = parameters.name?? &amp;&amp; fieldErrors?? &amp;&amp; fieldErrors[parameters.name]??/&gt;
-&lt;#if parameters.errorposition?default(&quot;top&quot;) == &#39;top&#39;&gt;
+&lt;#if (parameters.errorposition!&quot;top&quot;) == &#39;top&#39;&gt;
 &lt;#if hasFieldErrors&gt;
 &lt;#list fieldErrors[parameters.name] as error&gt;
 &lt;tr errorFor=&quot;${parameters.id}&quot;&gt;
@@ -259,7 +259,7 @@ under the License.
 	then give the label it&#39;s own row in the table
 --&gt;
 &lt;tr&gt;
-&lt;#if labelpos?default(&quot;&quot;) == &#39;top&#39;&gt;
+&lt;#if (labelpos!&quot;&quot;) == &#39;top&#39;&gt;
     &lt;td class=&quot;tdLabelTop&quot; colspan=&quot;2&quot;&gt;&lt;#rt/&gt;
 &lt;#else&gt;
     &lt;td class=&quot;tdLabel&quot;&gt;&lt;#rt/&gt;
@@ -275,20 +275,20 @@ under the License.
         class=&quot;label&quot;&lt;#t/&gt;
 &lt;/#if&gt;
     &gt;&lt;#t/&gt;
-&lt;#if parameters.required?default(false) &amp;&amp; parameters.requiredPosition?default(&quot;right&quot;) != &#39;right&#39;&gt;
+&lt;#if parameters.required!false &amp;&amp; parameters.requiredPosition!&quot;right&quot; != &#39;right&#39;&gt;
         &lt;span class=&quot;required&quot;&gt;*&lt;/span&gt;&lt;#t/&gt;
 &lt;/#if&gt;
 ${parameters.label?html}&lt;#t/&gt;
-&lt;#if parameters.required?default(false) &amp;&amp; parameters.requiredPosition?default(&quot;right&quot;) == &#39;right&#39;&gt;
+&lt;#if parameters.required!false &amp;&amp; parameters.requiredPosition!&quot;right&quot; == &#39;right&#39;&gt;
  &lt;span class=&quot;required&quot;&gt;*&lt;/span&gt;&lt;#t/&gt;
 &lt;/#if&gt;
-${parameters.labelseparator?default(&quot;:&quot;)?html}&lt;#t/&gt;
+${parameters.labelseparator!&quot;:&quot;?html}&lt;#t/&gt;
 &lt;#include &quot;/${parameters.templateDir}/${parameters.expandTheme}/tooltip.ftl&quot; /&gt;
 &lt;/label&gt;&lt;#t/&gt;
 &lt;/#if&gt;
     &lt;/td&gt;&lt;#lt/&gt;
 &lt;#-- add the extra row --&gt;
-&lt;#if labelpos?default(&quot;&quot;) == &#39;top&#39;&gt;
+&lt;#if (labelpos!&quot;&quot;) == &#39;top&#39;&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;/#if&gt;
@@ -325,10 +325,10 @@ ${parameters.labelseparator?default(&quo
  * under the License.
  */
 --&gt;
-${parameters.after?if_exists}&lt;#t/&gt;
+${parameters.after!}&lt;#t/&gt;
     &lt;/td&gt;&lt;#lt/&gt;
 &lt;/tr&gt;
-&lt;#if parameters.errorposition?default(&quot;top&quot;) == &#39;bottom&#39;&gt;
+&lt;#if (parameters.errorposition!&quot;top&quot;) == &#39;bottom&#39;&gt;
 &lt;#assign hasFieldErrors = parameters.name?? &amp;&amp; fieldErrors?? &amp;&amp; fieldErrors[parameters.name]??/&gt;
 &lt;#if hasFieldErrors&gt;
 &lt;#list fieldErrors[parameters.name] as error&gt;
@@ -452,8 +452,8 @@ ${parameters.after?if_exists}&lt;#t/&gt;
 --&gt;
 &lt;#include &quot;/${parameters.templateDir}/${parameters.expandTheme}/form-validate.ftl&quot; /&gt;
 &lt;#include &quot;/${parameters.templateDir}/${parameters.expandTheme}/form-common.ftl&quot; /&gt;
-&lt;#if (parameters.validate?default(false))&gt;
-  onreset=&quot;${parameters.onreset?default(&#39;clearErrorMessages(this);clearErrorLabels(this);&#39;)}&quot;
+&lt;#if (parameters.validate!false)&gt;
+  onreset=&quot;${parameters.onreset!&#39;clearErrorMessages(this);clearErrorLabels(this);&#39;}&quot;
 &lt;#else&gt;
   &lt;#if parameters.onreset??&gt;
   onreset=&quot;${parameters.onreset?html}&quot;
@@ -491,7 +491,7 @@ ${parameters.after?if_exists}&lt;#t/&gt;
 &lt;#include &quot;/${parameters.templateDir}/${parameters.expandTheme}/control-close.ftl&quot; /&gt;
 &lt;#include &quot;/${parameters.templateDir}/simple/form-close.ftl&quot; /&gt;
 &lt;#include &quot;/${parameters.templateDir}/${parameters.expandTheme}/form-close-validate.ftl&quot; /&gt;
-&lt;#if parameters.focusElement?if_exists != &quot;&quot;&gt;
+&lt;#if parameters.focusElement??&gt;
 &lt;script type=&quot;text/javascript&quot;&gt;
     StrutsUtils.addOnLoad(function() {
         var element = document.getElementById(&quot;${parameters.focusElement?html}&quot;);