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 2022/11/02 07:40:19 UTC
[struts] 01/01: WW-5255 Fixes and and uses them across tags
This is an automated email from the ASF dual-hosted git repository.
lukaszlenart pushed a commit to branch WW-5255-script-link
in repository https://gitbox.apache.org/repos/asf/struts.git
commit 5d272e513d2215dce0a5ea90894884b819d81185
Author: Lukasz Lenart <lu...@apache.org>
AuthorDate: Wed Nov 2 08:39:49 2022 +0100
WW-5255 Fixes <s:script/> and <s:link/> and uses them across tags
---
.../src/main/webapp/WEB-INF/decorators/main.jsp | 19 +++++----
.../struts2/interceptor/debugging/console.ftl | 8 ++--
.../src/main/resources/template/css_xhtml/head.ftl | 2 +-
.../main/resources/template/simple/combobox.ftl | 14 +++----
core/src/main/resources/template/simple/debug.ftl | 16 +++++---
.../resources/template/simple/doubleselect.ftl | 4 +-
.../template/simple/form-close-tooltips.ftl | 11 +++---
.../main/resources/template/simple/form-close.ftl | 4 +-
core/src/main/resources/template/simple/head.ftl | 2 +-
.../template/simple/inputtransferselect.ftl | 2 +-
core/src/main/resources/template/simple/link.ftl | 46 +++++++++++-----------
core/src/main/resources/template/simple/nonce.ftl | 4 +-
.../template/simple/optiontransferselect.ftl | 2 +-
core/src/main/resources/template/simple/script.ftl | 33 ++++++----------
.../resources/template/simple/updownselect.ftl | 4 +-
.../template/xhtml/form-close-validate.ftl | 8 ++--
.../main/resources/template/xhtml/form-close.ftl | 4 +-
.../resources/template/xhtml/form-validate.ftl | 2 +-
core/src/main/resources/template/xhtml/head.ftl | 2 +-
core/src/main/resources/template/xhtml/link.ftl | 21 ----------
core/src/main/resources/template/xhtml/script.ftl | 21 ----------
.../freemarker/FreemarkerResultMockedTest.java | 3 +-
.../apache/struts2/views/jsp/ui/LinkTagTest.java | 6 ++-
.../views/freemarker/callActionFreeMarker.ftl | 4 +-
.../views/freemarker/callActionFreeMarker2.ftl | 4 +-
.../struts2/views/freemarker/customTextField.ftl | 2 -
.../struts2/views/freemarker/dynaAttributes.ftl | 2 -
.../views/freemarker/incompatible-improvements.ftl | 4 +-
.../struts2/views/freemarker/manual-list.ftl | 2 -
.../org/apache/struts2/views/freemarker/nested.ftl | 4 +-
.../apache/struts2/views/freemarker/nonceTest.ftl | 2 -
.../apache/struts2/views/freemarker/something.ftl | 2 -
.../apache/struts2/views/jsp/ui/HeadTagTest-1.txt | 4 +-
.../org/apache/struts2/views/jsp/ui/tooltip-1.txt | 2 +-
.../org/apache/struts2/views/jsp/ui/tooltip-2.txt | 4 +-
.../org/apache/struts2/views/jsp/ui/tooltip-3.txt | 2 +-
.../resources/config-browser/showValidators.ftl | 32 +++++++++------
37 files changed, 129 insertions(+), 179 deletions(-)
diff --git a/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp b/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp
index ff1353032..77f387ace 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp
@@ -64,14 +64,14 @@
<title><decorator:title default="Struts2 Showcase"/></title>
<s:url var="bootstrapCss" value='/styles/bootstrap.css' encode='false' includeParams='none'/>
- <s:link href="%{bootstrapCss}" rel="stylesheet" type="text/css" media="all"></s:link>
+ <s:link href="%{bootstrapCss}" rel="stylesheet" type="text/css" media="all"/>
<s:url var="mainCss" value='/styles/main.css' encode='false' includeParams='none'/>
- <s:link href="%{mainCss}" rel="stylesheet" type="text/css" media="all"></s:link>
+ <s:link href="%{mainCss}" rel="stylesheet" type="text/css" media="all"/>
<s:url var="jqueryJs" value='/js/jquery-2.1.4.min.js' encode='false' includeParams='none'/>
- <s:script src="%{jqueryJs}"></s:script>
+ <s:script src="%{jqueryJs}"/>
<s:url var="bootstrapJs" value='/js/bootstrap.min.js' encode='false' includeParams='none'/>
- <s:script src="%{bootstrapJs}"></s:script>
+ <s:script src="%{bootstrapJs}"/>
<s:script type="text/javascript">
$(function () {
var alerts = $('ul.alert').wrap('<div />');
@@ -82,19 +82,22 @@
<!-- Prettify -->
<s:url var="prettifyCss" value='/styles/prettify.css' encode='false' includeParams='none'/>
- <s:link href="%{prettifyCss}" rel="stylesheet"></s:link>
+ <s:link href="%{prettifyCss}" rel="stylesheet"/>
<s:url var="prettifyJs" value='/js/prettify.js' encode='false' includeParams='none'/>
- <s:script src="%{prettifyJs}"></s:script>
+ <s:script src="%{prettifyJs}"/>
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
- <s:script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></s:script>
+ <s:script src="http://html5shim.googlecode.com/svn/trunk/html5.js"/>
<![endif]-->
+ <s:script>
+ jQuery(document).ready(function() { prettyPrint(); } );
+ </s:script>
<decorator:head/>
</head>
-<body id="page-home" onload="prettyPrint();">
+<body id="page-home">
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container-fluid">
diff --git a/core/src/main/resources/org/apache/struts2/interceptor/debugging/console.ftl b/core/src/main/resources/org/apache/struts2/interceptor/debugging/console.ftl
index daa4f6e20..eb42ba9f9 100644
--- a/core/src/main/resources/org/apache/struts2/interceptor/debugging/console.ftl
+++ b/core/src/main/resources/org/apache/struts2/interceptor/debugging/console.ftl
@@ -21,10 +21,10 @@
<!DOCTYPE html>
<html>
<head>
- <script type="text/javascript" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> >
- var baseUrl = "<@s.url value="/struts" includeParams="none"/>";
- window.open(baseUrl+"/webconsole.html", 'OGNL Console','width=500,height=450,status=no,toolbar=no,menubar=no');
- </script>
+ <@s.script type="text/javascript">
+ var baseUrl = "<@s.url value="/struts" includeParams="none"/>";
+ window.open(baseUrl+"/webconsole.html", 'OGNL Console','width=500,height=450,status=no,toolbar=no,menubar=no');
+ </...@s.script>
</head>
<body>
<pre>
diff --git a/core/src/main/resources/template/css_xhtml/head.ftl b/core/src/main/resources/template/css_xhtml/head.ftl
index 7d493e8ee..0c0a39791 100644
--- a/core/src/main/resources/template/css_xhtml/head.ftl
+++ b/core/src/main/resources/template/css_xhtml/head.ftl
@@ -18,5 +18,5 @@
* under the License.
*/
-->
-<link <#include "/${parameters.templateDir}/simple/nonce.ftl" /> rel="stylesheet" href="<@s.url value='${parameters.staticContentPath}/css_xhtml/styles.css' includeParams='none' encode='false' />" type="text/css" />
+<@s.link rel="stylesheet" href="${base}${parameters.staticContentPath}/css_xhtml/styles.css" type="text/css" />
<#include "/${parameters.templateDir}/simple/head.ftl" />
diff --git a/core/src/main/resources/template/simple/combobox.ftl b/core/src/main/resources/template/simple/combobox.ftl
index 761b57772..1cef11754 100644
--- a/core/src/main/resources/template/simple/combobox.ftl
+++ b/core/src/main/resources/template/simple/combobox.ftl
@@ -18,21 +18,21 @@
* under the License.
*/
-->
-<script type="text/javascript" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> >
+<@s.script type="text/javascript">
function autoPopulate_${parameters.escapedId}(targetElement) {
- <#if parameters.headerKey?? && parameters.headerValue??>
+ <#if parameters.headerKey?? && parameters.headerValue??>
if (targetElement.options[targetElement.selectedIndex].value == '${parameters.headerKey?js_string}') {
return;
}
- </#if>
- <#if parameters.emptyOption?default(false)>
+ </#if>
+ <#if parameters.emptyOption!false>
if (targetElement.options[targetElement.selectedIndex].value == '') {
- return;
+ return;
}
- </#if>
+ </#if>
targetElement.form.elements['${parameters.name?js_string}'].value=targetElement.options[targetElement.selectedIndex].value;
}
-</script>
+</...@s.script>
<#include "/${parameters.templateDir}/simple/text.ftl" />
<br />
<#if parameters.list??>
diff --git a/core/src/main/resources/template/simple/debug.ftl b/core/src/main/resources/template/simple/debug.ftl
index 6a2727d0d..889702213 100644
--- a/core/src/main/resources/template/simple/debug.ftl
+++ b/core/src/main/resources/template/simple/debug.ftl
@@ -18,8 +18,7 @@
* under the License.
*/
-->
-<script type="text/javascript" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> >
-<!--
+<@s.script>
function toggleDebug(debugId) {
var debugDiv = document.getElementById(debugId);
if (debugDiv) {
@@ -31,10 +30,9 @@
}
}
}
--->
-</script>
+</...@s.script>
-<style type="text/css">
+<style>
<!--
table.debugTable {border-collapse:collapse; border-spacing:0; background-color:#DDDDDD;}
table.debugTable th, table.debugTable td {padding:2px;}
@@ -42,7 +40,7 @@
</style>
<br>
-<a href="#" onclick="toggleDebug('<#if parameters.id??>${parameters.id}<#else>debug</#if>');return false;">[Debug]</a>
+<a href="#" id="toggle-button">[Debug]</a>
<div style="display:none" id="<#if parameters.id??>${parameters.id}<#else>debug</#if>">
<h2>Struts ValueStack Debug</h2>
<br>
@@ -86,3 +84,9 @@
</#list>
</table>
</div>
+<@s.script>
+ document.getElementById('toggle-button').onclick = function() {
+ toggleDebug('<#if parameters.id??>${parameters.id}<#else>debug</#if>');
+ return false;
+ }
+</...@s.script>
diff --git a/core/src/main/resources/template/simple/doubleselect.ftl b/core/src/main/resources/template/simple/doubleselect.ftl
index c064f29ae..674680ef1 100644
--- a/core/src/main/resources/template/simple/doubleselect.ftl
+++ b/core/src/main/resources/template/simple/doubleselect.ftl
@@ -73,7 +73,7 @@
</#if>
/>
</#if>
-<script type="text/javascript" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> >
+<@s.script type="text/javascript">
<#assign itemCount = startCount/>
var ${parameters.escapedId}Group = new Array(${parameters.listSize?number?c} + ${startCount});
for (var i = 0; i < (${parameters.listSize?number?c} + ${startCount}); i++) {
@@ -193,4 +193,4 @@
${parameters.escapedId}Temp.options[0].selected = true;
}
}
-</script>
+</...@s.script>
diff --git a/core/src/main/resources/template/simple/form-close-tooltips.ftl b/core/src/main/resources/template/simple/form-close-tooltips.ftl
index 21e25a4fe..1a418b985 100644
--- a/core/src/main/resources/template/simple/form-close-tooltips.ftl
+++ b/core/src/main/resources/template/simple/form-close-tooltips.ftl
@@ -19,12 +19,11 @@
*/
-->
-<#--
+<#--
Code that will add javascript needed for tooltips
--><#t/>
<#if (parameters.hasTooltip!false)><#t/>
- <#lt/><!-- javascript that is needed for tooltips -->
- <#lt/><script type="text/javascript" src='<@s.url value="${parameters.staticContentPath}/domTT.js" includeParams="none" encode="false" />' <#include "/${parameters.templateDir}/simple/nonce.ftl" /> > </script>
- <#lt/><link rel="stylesheet" type="text/css" href="<@s.url value="${parameters.staticContentPath}/domTT.css" includeParams="none" encode="false" />" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> />
-
-</#if><#t/>
\ No newline at end of file
+ <#lt/><!-- javascript that is needed for tooltips -->
+ <#lt/><@s.script type="text/javascript" src="${base}${parameters.staticContentPath}/domTT.js" />
+ <#lt/><@s.link rel="stylesheet" type="text/css" href="${base}${parameters.staticContentPath}/domTT.css" />
+</#if><#t/>
diff --git a/core/src/main/resources/template/simple/form-close.ftl b/core/src/main/resources/template/simple/form-close.ftl
index c2285b2e6..ce2b91259 100644
--- a/core/src/main/resources/template/simple/form-close.ftl
+++ b/core/src/main/resources/template/simple/form-close.ftl
@@ -21,7 +21,7 @@
</form>
<#if (parameters.customOnsubmitEnabled??)>
-<script type="text/javascript" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> >
+<@s.script type="text/javascript">
<#--
Enable auto-select of optiontransferselect tag's entries upon containing form's
submission.
@@ -96,7 +96,7 @@
}, true);
</#list>
</#if>
-</script>
+</...@s.script>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/form-close-tooltips.ftl" />
diff --git a/core/src/main/resources/template/simple/head.ftl b/core/src/main/resources/template/simple/head.ftl
index 359d7bf71..82fe8db20 100644
--- a/core/src/main/resources/template/simple/head.ftl
+++ b/core/src/main/resources/template/simple/head.ftl
@@ -18,4 +18,4 @@
* under the License.
*/
-->
-<script src="${base}${parameters.staticContentPath}/utils.js" type="text/javascript" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> ></script>
\ No newline at end of file
+<@s.script src="${base}${parameters.staticContentPath}/utils.js" type="text/javascript" />
diff --git a/core/src/main/resources/template/simple/inputtransferselect.ftl b/core/src/main/resources/template/simple/inputtransferselect.ftl
index 7684a097d..9b28a02ce 100644
--- a/core/src/main/resources/template/simple/inputtransferselect.ftl
+++ b/core/src/main/resources/template/simple/inputtransferselect.ftl
@@ -19,7 +19,7 @@
*/
-->
<#if !stack.findValue("#inputtransferselect_js_included")??><#t/>
- <script type="text/javascript" src="<@s.url value="${parameters.staticContentPath}/inputtransferselect.js" encode='false' includeParams='none'/>" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> ></script>
+ <@s.script type="text/javascript" src="${base}${parameters.staticContentPath}/inputtransferselect.js"/>
<#assign temporaryVariable = stack.setValue("#inputtransferselect_js_included", "true") /><#t/>
</#if><#t/>
<table>
diff --git a/core/src/main/resources/template/simple/link.ftl b/core/src/main/resources/template/simple/link.ftl
index b4af7f302..13d7b4b00 100644
--- a/core/src/main/resources/template/simple/link.ftl
+++ b/core/src/main/resources/template/simple/link.ftl
@@ -18,48 +18,46 @@
* under the License.
*/
-->
-<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
-<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
-<link <#include "/${parameters.templateDir}/simple/nonce.ftl" />
+<link<#rt/>
+<#if parameters.rel?has_content>
+ rel="${parameters.rel}"<#rt/>
+</#if>
+<#if parameters.type?has_content>
+ type="${parameters.type}"<#rt/>
+</#if>
<#if parameters.href?has_content>
- href="${parameters.href}"<#rt/>
+ href="${parameters.href}"<#rt/>
</#if>
<#if parameters.hreflang?has_content>
- hreflang="${parameters.hreflang}"<#rt/>
+ hreflang="${parameters.hreflang}"<#rt/>
</#if>
-<#if parameters.rel?has_content>
- rel="${parameters.rel}"<#rt/>
-</#if>
-<#if parameters.disabled?has_content>
- <#if parameters.disabled=="true">
- disabled<#rt/>
- </#if>
+<#if parameters.disabled?has_content && parameters.disabled == "true">
+ disabled<#rt/>
</#if>
<#if parameters.media?has_content>
- media="${parameters.media}"<#rt/>
-</#if>
-<#if parameters.type?has_content>
- type="${parameters.type}"<#rt/>
+ media="${parameters.media}"<#rt/>
</#if>
<#if parameters.title?has_content>
- title="${parameters.title}"<#rt/>
+ title="${parameters.title}"<#rt/>
</#if>
<#if parameters.as?has_content>
- as="${parameters.as}"<#rt/>
+ as="${parameters.as}"<#rt/>
</#if>
<#if parameters.referrerpolicy?has_content>
- referrerpolicy="${parameters.referrerpolicy}"<#rt/>
+ referrerpolicy="${parameters.referrerpolicy}"<#rt/>
</#if>
<#if parameters.sizes?has_content>
- sizes="${parameters.sizes}"<#rt/>
+ sizes="${parameters.sizes}"<#rt/>
</#if>
<#if parameters.crossorigin?has_content>
- crossorigin="${parameters.crossorigin}"<#rt/>
+ crossorigin="${parameters.crossorigin}"<#rt/>
</#if>
<#if parameters.integrity?has_content>
- integrity="${parameters.integrity}"<#rt/>
+ integrity="${parameters.integrity}"<#rt/>
</#if>
<#if parameters.importance?has_content>
- importance="${parameters.importance}"<#rt/>
+ importance="${parameters.importance}"<#rt/>
</#if>
->
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" /><#rt/>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" /><#rt/>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/nonce.ftl" /><#rt/>/>
diff --git a/core/src/main/resources/template/simple/nonce.ftl b/core/src/main/resources/template/simple/nonce.ftl
index 795d82a2e..507802a45 100644
--- a/core/src/main/resources/template/simple/nonce.ftl
+++ b/core/src/main/resources/template/simple/nonce.ftl
@@ -18,4 +18,6 @@
* under the License.
*/
-->
-<#if parameters.nonce?has_content>nonce="${parameters.nonce}"<#rt/></#if>
\ No newline at end of file
+<#if parameters.nonce?has_content><#rt/>
+ nonce="${parameters.nonce}"<#rt/>
+</#if><#rt/>
diff --git a/core/src/main/resources/template/simple/optiontransferselect.ftl b/core/src/main/resources/template/simple/optiontransferselect.ftl
index 36d4ca302..adf770499 100644
--- a/core/src/main/resources/template/simple/optiontransferselect.ftl
+++ b/core/src/main/resources/template/simple/optiontransferselect.ftl
@@ -19,7 +19,7 @@
*/
-->
<#if !stack.findValue("#optiontransferselect_js_included")??><#t/>
- <script type="text/javascript" src="<@s.url value="${parameters.staticContentPath}/optiontransferselect.js" encode='false' includeParams='none'/>" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> ></script>
+ <@s.script type="text/javascript" src="${base}${parameters.staticContentPath}/optiontransferselect.js" />
<#assign temporaryVariable = stack.setValue("#optiontransferselect_js_included", "true") /><#t/>
</#if><#t/>
<table>
diff --git a/core/src/main/resources/template/simple/script.ftl b/core/src/main/resources/template/simple/script.ftl
index 5afb30dd3..11ce14827 100644
--- a/core/src/main/resources/template/simple/script.ftl
+++ b/core/src/main/resources/template/simple/script.ftl
@@ -18,36 +18,27 @@
* under the License.
*/
-->
-<script <#rt/>
-<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
-<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
-<#include "/${parameters.templateDir}/simple/nonce.ftl" />
-<#if parameters.async?has_content>
- <#if parameters.async=="true">
- async<#rt/>
- </#if>
+<script<#rt/>
+<#if parameters.async?has_content && parameters.async == "true">
+ async<#rt/>
</#if>
<#if parameters.charset?has_content>
charset="${parameters.charset}"<#rt/>
</#if>
-<#if parameters.defer?has_content>
- <#if parameters.defer=="true">
- defer<#rt/>
- </#if>
-</#if>
-<#if parameters.src?has_content>
- src="${parameters.src}"<#rt/>
+<#if parameters.defer?has_content && parameters.defer=="true">
+ defer<#rt/>
</#if>
<#if parameters.type?has_content>
type="${parameters.type}"<#rt/>
</#if>
+<#if parameters.src?has_content>
+ src="${parameters.src}"<#rt/>
+</#if>
<#if parameters.referrerpolicy?has_content>
referrerpolicy="${parameters.referrerpolicy}"<#rt/>
</#if>
-<#if parameters.nomodule?has_content>
- <#if parameters.nomodule=="true">
- nomodule<#rt/>
- </#if>
+<#if parameters.nomodule?has_content && parameters.nomodule=="true">
+ nomodule<#rt/>
</#if>
<#if parameters.integrity?has_content>
integrity="${parameters.integrity}"<#rt/>
@@ -55,4 +46,6 @@
<#if parameters.crossorigin?has_content>
crossorigin="${parameters.crossorigin}"<#rt/>
</#if>
->
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/nonce.ftl" />>
diff --git a/core/src/main/resources/template/simple/updownselect.ftl b/core/src/main/resources/template/simple/updownselect.ftl
index f1185d3a5..7491f9a08 100644
--- a/core/src/main/resources/template/simple/updownselect.ftl
+++ b/core/src/main/resources/template/simple/updownselect.ftl
@@ -19,7 +19,7 @@
*/
-->
<#if !stack.findValue("#optiontransferselect_js_included")??><#t/>
- <script type="text/javascript" src="<@s.url value="${parameters.staticContentPath}/optiontransferselect.js" encode='false' includeParams='none'/>" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> ></script>
+ <@s.script type="text/javascript" src="${base}${parameters.staticContentPath}/optiontransferselect.js" /><#t/>
<#assign temporaryVariable = stack.setValue("#optiontransferselect_js_included", "true") /><#t/>
</#if><#t/>
<table>
@@ -52,4 +52,4 @@
</#if><#t/>
</#if><#t/>
</td></tr>
-</table>
\ No newline at end of file
+</table>
diff --git a/core/src/main/resources/template/xhtml/form-close-validate.ftl b/core/src/main/resources/template/xhtml/form-close-validate.ftl
index afa1c50ae..dfc338cbc 100644
--- a/core/src/main/resources/template/xhtml/form-close-validate.ftl
+++ b/core/src/main/resources/template/xhtml/form-close-validate.ftl
@@ -32,7 +32,7 @@ Only the following validators are supported:
END SNIPPET: supported-validators
-->
<#if ((parameters.validate!false == true) && (parameters.performValidation!false == true))>
-<script type="text/javascript" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> >
+<@s.script type="text/javascript">
function validateForm_${parameters.escapedId}() {
<#--
In case of multiselect fields return only the first value.
@@ -75,7 +75,7 @@ END SNIPPET: supported-validators
var error = "${validator.getMessage(action)?js_string}";
var fieldValue = getFieldValue(field);
-
+
<#if validator.validatorType = "required">
if (fieldValue === "") {
addError(field, error);
@@ -152,5 +152,5 @@ END SNIPPET: supported-validators
return !errors;
}
-</script>
-</#if>
\ No newline at end of file
+</...@s.script>
+</#if>
diff --git a/core/src/main/resources/template/xhtml/form-close.ftl b/core/src/main/resources/template/xhtml/form-close.ftl
index b8a90fc79..300de7a04 100644
--- a/core/src/main/resources/template/xhtml/form-close.ftl
+++ b/core/src/main/resources/template/xhtml/form-close.ftl
@@ -22,12 +22,12 @@
<#include "/${parameters.templateDir}/simple/form-close.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/form-close-validate.ftl" />
<#if parameters.focusElement??>
-<script type="text/javascript" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> >
+<@s.script type="text/javascript">
StrutsUtils.addOnLoad(function() {
var element = document.getElementById("${parameters.focusElement?js_string}");
if(element) {
element.focus();
}
});
-</script>
+</...@s.script>
</#if>
diff --git a/core/src/main/resources/template/xhtml/form-validate.ftl b/core/src/main/resources/template/xhtml/form-validate.ftl
index 2880ffbf1..028c5d9ec 100644
--- a/core/src/main/resources/template/xhtml/form-validate.ftl
+++ b/core/src/main/resources/template/xhtml/form-validate.ftl
@@ -19,7 +19,7 @@
*/
-->
<#if parameters.validate!false == true>
- <script type="text/javascript" src="${base}${parameters.staticContentPath}/xhtml/validation.js" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> ></script>
+ <@s.script type="text/javascript" src="${base}${parameters.staticContentPath}/xhtml/validation.js" />
<#if parameters.onsubmit??>
${tag.addParameter('onsubmit', "${parameters.onsubmit}; return validateForm_${parameters.escapedId}();")}
<#else>
diff --git a/core/src/main/resources/template/xhtml/head.ftl b/core/src/main/resources/template/xhtml/head.ftl
index 7b5bfe08d..f72d220d6 100644
--- a/core/src/main/resources/template/xhtml/head.ftl
+++ b/core/src/main/resources/template/xhtml/head.ftl
@@ -18,5 +18,5 @@
* under the License.
*/
-->
-<link rel="stylesheet" href="<@s.url value='${parameters.staticContentPath}/xhtml/styles.css' includeParams='none' encode='false'/>" type="text/css" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> />
+<@s.link rel="stylesheet" href="${base}${parameters.staticContentPath}/xhtml/styles.css" type="text/css" />
<#include "/${parameters.templateDir}/simple/head.ftl" />
diff --git a/core/src/main/resources/template/xhtml/link.ftl b/core/src/main/resources/template/xhtml/link.ftl
deleted file mode 100644
index 5261e7b19..000000000
--- a/core/src/main/resources/template/xhtml/link.ftl
+++ /dev/null
@@ -1,21 +0,0 @@
-<#--
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
--->
-<#include "/${parameters.templateDir}/simple/link.ftl" />
diff --git a/core/src/main/resources/template/xhtml/script.ftl b/core/src/main/resources/template/xhtml/script.ftl
deleted file mode 100644
index 2dc7d3fd8..000000000
--- a/core/src/main/resources/template/xhtml/script.ftl
+++ /dev/null
@@ -1,21 +0,0 @@
-<#--
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
--->
-<#include "/${parameters.templateDir}/simple/script.ftl" />
diff --git a/core/src/test/java/org/apache/struts2/views/freemarker/FreemarkerResultMockedTest.java b/core/src/test/java/org/apache/struts2/views/freemarker/FreemarkerResultMockedTest.java
index f0fa5d3ba..3a7c4b863 100644
--- a/core/src/test/java/org/apache/struts2/views/freemarker/FreemarkerResultMockedTest.java
+++ b/core/src/test/java/org/apache/struts2/views/freemarker/FreemarkerResultMockedTest.java
@@ -243,7 +243,8 @@ public class FreemarkerResultMockedTest extends StrutsInternalTestCase {
EasyMock.expect(servletContext.getRealPath("/template/~~~xhtml/dynamic-attributes.ftl")).andReturn(file.getAbsolutePath());
file = new File(ClassLoaderUtil.getResource("template/simple/nonce.ftl", getClass()).toURI());
- EasyMock.expect(servletContext.getRealPath("/template/simple/nonce.ftl")).andReturn(file.getAbsolutePath());
+ EasyMock.expect(servletContext.getRealPath("/template/xhtml/nonce.ftl")).andReturn(file.getAbsolutePath());
+ EasyMock.expect(servletContext.getRealPath("/template/~~~xhtml/nonce.ftl")).andReturn(file.getAbsolutePath());
file = new File(ClassLoaderUtil.getResource("template/simple/script.ftl", getClass()).toURI());
EasyMock.expect(servletContext.getRealPath("/template/simple/script.ftl")).andReturn(file.getAbsolutePath());
diff --git a/core/src/test/java/org/apache/struts2/views/jsp/ui/LinkTagTest.java b/core/src/test/java/org/apache/struts2/views/jsp/ui/LinkTagTest.java
index ecba64c56..ad5fca107 100644
--- a/core/src/test/java/org/apache/struts2/views/jsp/ui/LinkTagTest.java
+++ b/core/src/test/java/org/apache/struts2/views/jsp/ui/LinkTagTest.java
@@ -26,7 +26,7 @@ public class LinkTagTest extends AbstractUITagTest {
private static final String NONCE_VAL = "r4andom";
- public void testLinkTagAttributes() {
+ public void testLinkTagAttributes() throws JspException {
LinkTag tag = new LinkTag();
tag.setHref("mysrc.js");
@@ -40,6 +40,7 @@ public class LinkTagTest extends AbstractUITagTest {
tag.setAs("test");
tag.setDisabled("false");
tag.setTitle("test");
+ tag.setDynamicAttribute(null, "data-id", "id4test");
doLinkTest(tag);
String s = writer.toString();
@@ -55,7 +56,8 @@ public class LinkTagTest extends AbstractUITagTest {
assertTrue("Incorrect as attribute for link tag", s.contains("as=\"test\""));
assertFalse("Non-existent disabled attribute for link tag", s.contains("disabled"));
assertTrue("Incorrect title attribute for link tag", s.contains("title=\"test\""));
- assertTrue("Incorrect nonce attribute for link tag", s.contains("nonce=\"" + NONCE_VAL+"\""));
+ assertTrue("Incorrect nonce attribute for link tag", s.contains("nonce=\"" + NONCE_VAL + "\""));
+ assertTrue("Incorrect data-id dynamic attribute for link tag", s.contains("data-id=\"id4test\""));
}
private void doLinkTest(LinkTag tag) {
diff --git a/core/src/test/resources/org/apache/struts2/views/freemarker/callActionFreeMarker.ftl b/core/src/test/resources/org/apache/struts2/views/freemarker/callActionFreeMarker.ftl
index a36b3bd79..e095244a6 100644
--- a/core/src/test/resources/org/apache/struts2/views/freemarker/callActionFreeMarker.ftl
+++ b/core/src/test/resources/org/apache/struts2/views/freemarker/callActionFreeMarker.ftl
@@ -1,7 +1,5 @@
<#--
/*
- * $Id: someFreeMarkerFile.ftl 590812 2007-10-31 20:32:54Z apetrelli $
- *
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -20,4 +18,4 @@
* under the License.
*/
-->
-before<@s.action namespace="/tutorial" name="test4" executeResult="true" rethrowException="true"/>after
\ No newline at end of file
+before<@s.action namespace="/tutorial" name="test4" executeResult="true" rethrowException="true"/>after
diff --git a/core/src/test/resources/org/apache/struts2/views/freemarker/callActionFreeMarker2.ftl b/core/src/test/resources/org/apache/struts2/views/freemarker/callActionFreeMarker2.ftl
index de83b535f..84fe86826 100644
--- a/core/src/test/resources/org/apache/struts2/views/freemarker/callActionFreeMarker2.ftl
+++ b/core/src/test/resources/org/apache/struts2/views/freemarker/callActionFreeMarker2.ftl
@@ -1,7 +1,5 @@
<#--
/*
- * $Id: someFreeMarkerFile.ftl 590812 2007-10-31 20:32:54Z apetrelli $
- *
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -20,4 +18,4 @@
* under the License.
*/
-->
-before<@s.action namespace="/tutorial" name="test3" executeResult="true" rethrowException="true"/>after
\ No newline at end of file
+before<@s.action namespace="/tutorial" name="test3" executeResult="true" rethrowException="true"/>after<#rt/>
diff --git a/core/src/test/resources/org/apache/struts2/views/freemarker/customTextField.ftl b/core/src/test/resources/org/apache/struts2/views/freemarker/customTextField.ftl
index 4409d2951..87fb04ddd 100644
--- a/core/src/test/resources/org/apache/struts2/views/freemarker/customTextField.ftl
+++ b/core/src/test/resources/org/apache/struts2/views/freemarker/customTextField.ftl
@@ -1,7 +1,5 @@
<#--
/*
- * $Id: someFreeMarkerFile.ftl 590812 2007-10-31 20:32:54Z apetrelli $
- *
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
diff --git a/core/src/test/resources/org/apache/struts2/views/freemarker/dynaAttributes.ftl b/core/src/test/resources/org/apache/struts2/views/freemarker/dynaAttributes.ftl
index 68a7f70a6..f4fdb9961 100644
--- a/core/src/test/resources/org/apache/struts2/views/freemarker/dynaAttributes.ftl
+++ b/core/src/test/resources/org/apache/struts2/views/freemarker/dynaAttributes.ftl
@@ -1,7 +1,5 @@
<#--
/*
- * $Id: someFreeMarkerFile.ftl 590812 2007-10-31 20:32:54Z apetrelli $
- *
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
diff --git a/core/src/test/resources/org/apache/struts2/views/freemarker/incompatible-improvements.ftl b/core/src/test/resources/org/apache/struts2/views/freemarker/incompatible-improvements.ftl
index 99d929d68..01b251f6f 100644
--- a/core/src/test/resources/org/apache/struts2/views/freemarker/incompatible-improvements.ftl
+++ b/core/src/test/resources/org/apache/struts2/views/freemarker/incompatible-improvements.ftl
@@ -1,7 +1,5 @@
<#--
/*
- * $Id: someFreeMarkerFile.ftl 590812 2007-10-31 20:32:54Z apetrelli $
- *
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -20,4 +18,4 @@
* under the License.
*/
-->
-<input type="text" onclick="this.alert('${error}')"/>
\ No newline at end of file
+<input type="text" onclick="this.alert('${error}')"/><#rt />
diff --git a/core/src/test/resources/org/apache/struts2/views/freemarker/manual-list.ftl b/core/src/test/resources/org/apache/struts2/views/freemarker/manual-list.ftl
index d00a85b39..96258154a 100644
--- a/core/src/test/resources/org/apache/struts2/views/freemarker/manual-list.ftl
+++ b/core/src/test/resources/org/apache/struts2/views/freemarker/manual-list.ftl
@@ -1,7 +1,5 @@
<#--
/*
- * $Id: someFreeMarkerFile.ftl 590812 2007-10-31 20:32:54Z apetrelli $
- *
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
diff --git a/core/src/test/resources/org/apache/struts2/views/freemarker/nested.ftl b/core/src/test/resources/org/apache/struts2/views/freemarker/nested.ftl
index f8fc66dcf..c7535301e 100644
--- a/core/src/test/resources/org/apache/struts2/views/freemarker/nested.ftl
+++ b/core/src/test/resources/org/apache/struts2/views/freemarker/nested.ftl
@@ -1,7 +1,5 @@
<#--
/*
- * $Id: someFreeMarkerFile.ftl 590812 2007-10-31 20:32:54Z apetrelli $
- *
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -20,4 +18,4 @@
* under the License.
*/
-->
-nested
\ No newline at end of file
+nested<#rt/>
diff --git a/core/src/test/resources/org/apache/struts2/views/freemarker/nonceTest.ftl b/core/src/test/resources/org/apache/struts2/views/freemarker/nonceTest.ftl
index a69bd3d6d..7e1a37871 100644
--- a/core/src/test/resources/org/apache/struts2/views/freemarker/nonceTest.ftl
+++ b/core/src/test/resources/org/apache/struts2/views/freemarker/nonceTest.ftl
@@ -1,7 +1,5 @@
<#--
/*
- * $Id: someFreeMarkerFile.ftl 590812 2007-10-31 20:32:54Z apetrelli $
- *
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
diff --git a/core/src/test/resources/org/apache/struts2/views/freemarker/something.ftl b/core/src/test/resources/org/apache/struts2/views/freemarker/something.ftl
index 2ca0b5c50..8a21f62c5 100644
--- a/core/src/test/resources/org/apache/struts2/views/freemarker/something.ftl
+++ b/core/src/test/resources/org/apache/struts2/views/freemarker/something.ftl
@@ -1,8 +1,6 @@
<#ftl attributes={"content_type": "text/xml"} />
<#--
/*
- * $Id: someFreeMarkerFile.ftl 590812 2007-10-31 20:32:54Z apetrelli $
- *
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
diff --git a/core/src/test/resources/org/apache/struts2/views/jsp/ui/HeadTagTest-1.txt b/core/src/test/resources/org/apache/struts2/views/jsp/ui/HeadTagTest-1.txt
index 00dd01f26..cf6ed8e56 100644
--- a/core/src/test/resources/org/apache/struts2/views/jsp/ui/HeadTagTest-1.txt
+++ b/core/src/test/resources/org/apache/struts2/views/jsp/ui/HeadTagTest-1.txt
@@ -1,2 +1,2 @@
-<link rel="stylesheet" href="/static/xhtml/styles.css" type="text/css" nonce="r4nd0m"/>
-<script src="/static/utils.js" type="text/javascript" nonce="r4nd0m"></script>
\ No newline at end of file
+<link rel="stylesheet" type="text/css" href="/static/xhtml/styles.css" nonce="r4nd0m"/>
+<script type="text/javascript" src="/static/utils.js" nonce="r4nd0m"></script>
diff --git a/core/src/test/resources/org/apache/struts2/views/jsp/ui/tooltip-1.txt b/core/src/test/resources/org/apache/struts2/views/jsp/ui/tooltip-1.txt
index 80b16d008..d34b31d2d 100644
--- a/core/src/test/resources/org/apache/struts2/views/jsp/ui/tooltip-1.txt
+++ b/core/src/test/resources/org/apache/struts2/views/jsp/ui/tooltip-1.txt
@@ -15,7 +15,7 @@
</table>
</form>
<!--javascript that is needed for tooltips-->
-<script type="text/javascript" src='/static/domTT.js'></script>
+<script type="text/javascript" src="/static/domTT.js"></script>
<link rel="stylesheet" type="text/css" href="/static/domTT.css"/>
diff --git a/core/src/test/resources/org/apache/struts2/views/jsp/ui/tooltip-2.txt b/core/src/test/resources/org/apache/struts2/views/jsp/ui/tooltip-2.txt
index 88a298fa9..e04c68858 100644
--- a/core/src/test/resources/org/apache/struts2/views/jsp/ui/tooltip-2.txt
+++ b/core/src/test/resources/org/apache/struts2/views/jsp/ui/tooltip-2.txt
@@ -15,5 +15,5 @@
</table>
</form>
<!--javascript that is needed for tooltips-->
-<script type="text/javascript" src='/static/domTT.js'></script>
-<link rel="stylesheet" type="text/css" href="/static/domTT.css"/>
\ No newline at end of file
+<script type="text/javascript" src="/static/domTT.js"></script>
+<link rel="stylesheet" type="text/css" href="/static/domTT.css"/>
diff --git a/core/src/test/resources/org/apache/struts2/views/jsp/ui/tooltip-3.txt b/core/src/test/resources/org/apache/struts2/views/jsp/ui/tooltip-3.txt
index 2c1e49b45..a70521455 100644
--- a/core/src/test/resources/org/apache/struts2/views/jsp/ui/tooltip-3.txt
+++ b/core/src/test/resources/org/apache/struts2/views/jsp/ui/tooltip-3.txt
@@ -16,6 +16,6 @@
</form>
<!--javascript that is needed for tooltips-->
-<script type="text/javascript" src='/static/domTT.js'></script>
+<script type="text/javascript" src="/static/domTT.js"></script>
<link rel="stylesheet" type="text/css" href="/static/domTT.css"/>
diff --git a/plugins/config-browser/src/main/resources/config-browser/showValidators.ftl b/plugins/config-browser/src/main/resources/config-browser/showValidators.ftl
index ad98169f2..068198180 100644
--- a/plugins/config-browser/src/main/resources/config-browser/showValidators.ftl
+++ b/plugins/config-browser/src/main/resources/config-browser/showValidators.ftl
@@ -20,18 +20,26 @@
-->
<!-- Validators -->
<table width="100%">
- <tr><th>Field</th><th>Type</th><th> </th></tr>
+ <tr>
+ <th>Field</th>
+ <th>Type</th>
+ <th> </th>
+ </tr>
<#assign row = 0>
- <#if validators??>
- <#foreach i in validators>
- <tr <#if i_index%2 gt 0>class="b"<#else>class="a"</#if>>
- <td>${i.fieldName!"(see expression)"}</td>
- <td>${action.stripPackage(i.class)}</td>
- <td>
- <a href="#" onClick="window.open('validatorDetails.${extension}?clazz=${clazz}&context=${context}&selected=${row}', 'Validator Details', 'resizable=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,width=640,height=480');">details</a>
- </td>
- </tr>
- <#assign row = row + 1>
+ <#if validators??>
+ <#foreach i in validators>
+ <tr <#if i_index%2 gt 0>class="b" <#else>class="a"</#if>>
+ <td>${i.fieldName!"(see expression)"}</td>
+ <td>${action.stripPackage(i.class)}</td>
+ <td><a href="#" id="show-validators">details</a></td>
+ </tr>
+ <#assign row = row + 1>
</#foreach>
- </#if>
+ </#if>
</table>
+<@s.script>
+ document.getElementById('show-validators').onclick = function() {
+ window.open('validatorDetails.${extension}?clazz=${clazz}&context=${context}&selected=${row}', 'Validator Details', 'resizable=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,width=640,height=480');
+ return false;
+ }
+</...@s.script>