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>
