FREEMARKER-55: use Environment.formatToPlainText(model) if param value in url 
function is not string model.


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/7c6f56cb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/7c6f56cb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/7c6f56cb

Branch: refs/heads/3
Commit: 7c6f56cb1f6d9576c6e4b5d30ba700cb3c23b3ba
Parents: ba180d0
Author: Woonsan Ko <[email protected]>
Authored: Wed Sep 13 21:57:47 2017 -0400
Committer: Woonsan Ko <[email protected]>
Committed: Wed Sep 13 21:57:47 2017 -0400

----------------------------------------------------------------------
 .../org/apache/freemarker/spring/model/UrlFunction.java | 12 ++++++++----
 .../views/test/model/url-function-basic-usages.ftl      |  2 +-
 2 files changed, 9 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7c6f56cb/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/UrlFunction.java
----------------------------------------------------------------------
diff --git 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/UrlFunction.java
 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/UrlFunction.java
index 908b3de..e2986a9 100644
--- 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/UrlFunction.java
+++ 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/UrlFunction.java
@@ -123,20 +123,24 @@ class UrlFunction extends 
AbstractSpringTemplateFunctionModel {
                 paramNameModel = pair.getKey();
                 paramValueModel = pair.getValue();
 
-                if ((paramNameModel instanceof TemplateStringModel)
-                        && (paramValueModel instanceof TemplateStringModel)) {
+                if (paramNameModel instanceof TemplateStringModel) {
                     paramName = ((TemplateStringModel) 
paramNameModel).getAsString();
-                    paramValue = ((TemplateStringModel) 
paramValueModel).getAsString();
 
                     if (paramName.isEmpty()) {
                         
CallableUtils.newArgumentValueException(PARAMS_PARAM_IDX,
                                 "Parameter name must be a non-blank string.", 
this);
                     }
 
+                    if (paramValueModel instanceof TemplateStringModel) {
+                        paramValue = ((TemplateStringModel) 
paramValueModel).getAsString();
+                    } else {
+                        paramValue = env.formatToPlainText(paramValueModel);
+                    }
+
                     params.add(new _KeyValuePair<String, String>(paramName, 
paramValue));
                 } else {
                     CallableUtils.newArgumentValueException(PARAMS_PARAM_IDX,
-                            "Parameter name and value must be string.", this);
+                            "Parameter name must be string.", this);
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7c6f56cb/freemarker-spring/src/test/resources/META-INF/web-resources/views/test/model/url-function-basic-usages.ftl
----------------------------------------------------------------------
diff --git 
a/freemarker-spring/src/test/resources/META-INF/web-resources/views/test/model/url-function-basic-usages.ftl
 
b/freemarker-spring/src/test/resources/META-INF/web-resources/views/test/model/url-function-basic-usages.ftl
index cd8ff79..e25a2d5 100644
--- 
a/freemarker-spring/src/test/resources/META-INF/web-resources/views/test/model/url-function-basic-usages.ftl
+++ 
b/freemarker-spring/src/test/resources/META-INF/web-resources/views/test/model/url-function-basic-usages.ftl
@@ -40,7 +40,7 @@
   <#list users as user>
     <li>
       <div id="user-${user.id!}">
-        <a class="userIdLink" href="${spring.url('/users/{userId}/', 
userId=user.id?string)}">${user.id!}</a>
+        <a class="userIdLink" href="${spring.url('/users/{userId}/', 
userId=user.id)}">${user.id!}</a>
         <a class="userNameLink" 
href="${spring.url('/users/${user.id}/')}">${user.firstName!} 
${user.lastName!}</a>
       </div>
     </li>

Reply via email to