On Sun, Sep 3, 2017 at 7:55 AM, Daniel Dekany <ddek...@apache.org> wrote:
> Sunday, September 3, 2017, 6:29:54 AM, Woonsan Ko wrote:
>
>> On Sat, Sep 2, 2017 at 7:33 PM, Woonsan Ko <woon...@apache.org> wrote:
>>> On Sat, Sep 2, 2017 at 3:36 AM, Daniel Dekany <ddek...@apache.org> wrote:
>>>> Saturday, September 2, 2017, 5:24:11 AM, Woonsan Ko wrote:
>>>>
>>>>> On Thu, Aug 24, 2017 at 4:04 PM, Daniel Dekany <ddek...@apache.org> wrote:
>>>>>> Thursday, August 24, 2017, 9:53:11 AM, Daniel Dekany wrote:
>>>>>>
>>>>>>> Thursday, August 24, 2017, 6:19:29 AM, Woonsan Ko wrote:
>>>>>>>
>>>>>>>> On Mon, Aug 21, 2017 at 12:19 AM, Daniel Dekany <ddek...@apache.org> 
>>>>>>>> wrote:
>>>>>>>>> Monday, August 7, 2017, 9:18:36 PM, Woonsan Ko wrote:
>>>>>>>>>
>>>>>>>>>> On Mon, Aug 7, 2017 at 11:03 AM, Daniel Dekany <ddek...@apache.org> 
>>>>>>>>>> wrote:
>>>>>>>>>>> If you are going to implement these directly as
>>>>>>>>>>> TemplateDirectiveModel-s and TemplateFunctionModel-s, then you 
>>>>>>>>>>> better
>>>>>>>>>>> wait until I merge at least the FREEMARKER-63 PR... probably also
>>>>>>>>>>> FREEMARKER-64. I will try to do that tonight. At least 63.
>>>>>>>>>>
>>>>>>>>>> OK, I'll watch and wait for that. :-)
>>>>>>>>>
>>>>>>>>> FREEMARKER-63, 64 and 65 has been committed. Try to use CallableUtils
>>>>>>>>> for argument validation and other exception creation. See
>>>>>>>>> AssertFailsDirective as an example. Of course, ideas for improving
>>>>>>>>> CallableUtils are highly welcome.
>>>>>>>>>
>>>>>>>>> BTW, certainly there are several TemplateFunctionModel and
>>>>>>>>> TemplateDirectiveModel implementations that could but don't yet use
>>>>>>>>> CallableUtils for argument validation. If you spot some, you may go
>>>>>>>>> ahead and improve them.
>>>>>>>>
>>>>>>>> Thank you so much! I've briefly browsed the PRs linked from the JIRA
>>>>>>>> tickets, and it is really great!
>>>>>>
>>>>>> Though you better look at the examples in the 3.0 branch, because
>>>>>> FREEMARKER-65 wasn't a PR; I have committed it directly there. (Maybe
>>>>>> I shouldn't do that.)
>>>>>>
>>>>>>>> Really easy to extend it with
>>>>>>>> TemplateCallableModel. Very simple but really powerful! I also saw
>>>>>>>> IncludePage directive (as named "include_page")  in
>>>>>>>> freemarker-servlet; it looks really straightforward.
>>>>>>>> I'll try to write equivalent directives or functions from spring JSP
>>>>>>>> Tag Library [1] and spring-form JSP Tag Library [2].
>>>>>>>
>>>>>>> Certainly quite a few changes will be needed compared to the JSP
>>>>>>> taglib. One such question if when and how escaping related
>>>>>>> functionality will appear, as escaping is a core facility in FTL.
>>>>>>> Also there are strange things like `<spring:url path=... var='v'>`.
>>>>>>> I'm not sure why that isn't a function (used like
>>>>>>> <c:set v=spring:ulr(path)>)...
>>>>>>
>>>>>> With correct JSP syntax that actually would be
>>>>>>
>>>>>>   <c:set var="v" value="${spring:url("somePath")}">
>>>>>>
>>>>>> if spring:url was a function. So it's kind of understandable that they
>>>>>> rather go with
>>>>>>
>>>>>>   <spring:url path="somePath" var="v" />
>>>>>>
>>>>>> But in FreeMarker it would be just:
>>>>>>
>>>>>>   <#assign v = spring.url("somePath")>
>>>>>>
>>>>>> or if you want to print it into the HTML:
>>>>>>
>>>>>>   <a href="${spring.url("somePath")}">
>>>>>>
>>>>>> So this was a case where what's a custom tag in JSP should be a
>>>>>> function in FreeMarker, not a directive.
>>>>>>
>>>>>>> Also note that in FTL you can have positional parameters for
>>>>>>> directives, and named parameters for functions.
>>>>>>
>>>>>> Usually, if a directive has a required parameter, whose meaning is
>>>>>> obvious for almost anybody, then that should be a positional
>>>>>> parameter. A very clear case of this is <#if something>. A less clear
>>>>>> case, but still maybe a good idea is making the "path" parameter of
>>>>>> form:input, form:label etc. positional:
>>>>>>
>>>>>>     <tr>
>>>>>>       <td><@form.label "contactPerson">Contact person</@></td>
>>>>>>       <td><@form.input "contactPerson"/></td>
>>>>>>     </tr>
>>>>>>
>>>>>> I think anyone who knows even a little about Spring forms will know
>>>>>> that "contactPerson" is the property name in the backing form bean. Or
>>>>>> if not, path="contactPerson" is not much more helpful either.
>>>>>>
>>>>>> Another place where FreeMarker differs from the approach of the Spring
>>>>>> JSP tags is when you refer to a value of the model (or to any Servlet
>>>>>> attribute). Like, you have an "employee" bean in the Spring Model, and
>>>>>> as far as I see in JSP you are supposed to bind that to a form like
>>>>>> this:
>>>>>>
>>>>>>   <form:form action="/storeEmployee" modelAttribute="employee">
>>>>>>
>>>>>> While technically possible, that's quote alien from FreeMarker. If the
>>>>>> directive wants to do something with the `emloyee` object, then pass
>>>>>> the object itself to it as argument, not the name of it. Like this:
>>>>>>
>>>>>>   <@form.form action="/storeEmployee" model=employee>
>>>>>>
>>>>>> Unless, the `form` directive indeed has to know the *name* of the
>>>>>> variable, as opposed to just the value of it... I'm not sure if that's
>>>>>> the case here. But I have seen this patter a few times in JSP (pass
>>>>>> the name of something instead of the thing itself), and had the
>>>>>> feeling that often it's just to avoid the more noisy
>>>>>> `model="${employee}"` syntax. FreeMarker has no such problem, as it's
>>>>>> just `model=employee` there, which is even less verbose than passing
>>>>>> the name of the variable.
>>>>>>
>>>>>>> Also that a value can be both a function and a directive; maybe
>>>>>>> useful for message printing. If called like a function, it returns a
>>>>>>> string, if called like a tag, it prints the message without
>>>>>>> escaping... maybe.
>>>>>>
>>>>>> So that practically means that these two will be equivalent:
>>>>>>
>>>>>>   <@spring.message "foo" />
>>>>>>
>>>>>>   ${spring.message("foo")?noEsc}
>>>>>>
>>>>>> Now this is maybe too confusing for most users and thus is a bad idea.
>>>>>> But if spring.message will only have one type, then that's surely
>>>>>> function, not directive (unlike in the FM2 Spring integration).
>>>>>
>>>>> <spring:message /> tag also has many optional parameters: message,
>>>>> code, arguments, argumentSeparator, text, var, scope, htmlEscape and
>>>>> javaScriptEscape. Without 'var' support by a directive, it means
>>>>> invoking the function for the same parameters every time. code means
>>>>> resource bundle key, text means default value if not found, and
>>>>> message means an argument for the Spring-specific
>>>>> MessageSourceResolvable. So, in this specific case, I don't know which
>>>>> one should take the positional parameter. Perhaps 'code'?
>>>>
>>>> Yes. That's the only required parameter to start with. Also, if you
>>>
>>> One problem is that 'code' is not required in spring tag. Perhaps
>>> someones are using the tag without 'code' in some cases.
>>> I assume the only positional parameter for 'code' in FTL function
>>> could be optional with default value being null, right?
>>
>> I've tried with the idea as spring.message function:
>> -
>> https://github.com/woonsan/incubator-freemarker/blob/feature/FREEMARKER-55-2/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/MessageFunction.java
>
> An argument is a string exactly if it implements TemplateStringModel.
> Then TemplateStringModel.getAsString() returns the String object. It
> doesn't mater what does it wrap, if anything. Also, because of the
> toString(), the current code accepts any kind of object.

Thanks for the pointer!
I've replaced it with CallableUtils.getOptionalStringArgument(args,
CODE_PARAM_IDX, this).

>
> Also, for generating exceptions, CallableUtils should be used wherever
> possible.

Cool! Updated those accordingly, too.

>
>> It reads 'code' and message arguments from positional vargs, with no
>> predefined positional args since it should support 'message' named
>> parameter without 'code'.
>
> "code" is still a predefined positional argument (even if optional
> because of the named "message" param). After that there's a varargs
> parameter for the message parameters only.
>
>> For example,
>> <th>${spring.message("user.firstName")!}</th>
>> <p>${spring.message("user.form.message", user.firstName,
>> user.lastName, user.email)?html}</p>
>
> Note that `?html` is old-style, as we prefer HTML auto-escaping for a
> while. So we should use `?jsString` if we want to demonstrate explicit
> escaping.

Right. I updated the example simply to have <#ftl outputFormat="HTML">.
I'll move onto the rest of spring.tld tags and form.tld tags.

Cheers,

Woonsan

>
>> (ref:
>> https://github.com/woonsan/spring-mvc-freemarker3-demo/blob/master/src/main/webapp/WEB-INF/views/useredit.ftl)
>>
>> Still need to add an example using 'message' named parameter.
>>
>> Regards,
>>
>> Woonsan
>>
>>>
>>>> look at `spring.message("foo")`, I think you would intuitively think
>>>> that it prints the "foo" message. As of the others, I guess we don't
>>>> need "text" as you can write ${spring.message("foo")!'default'}, nor
>>>> do we need the xxxEscape parameters, as we have HTML auto-escaping and
>>>> `spring.message("foo")?jsString`.
>>>
>>> Oh, cool! I didn't know we have ?jsString. Perfect.
>>>
>>>>
>>>>>>
>>>>>> Something that would be interesting if the spring.message function can
>>>>>> somehow tell if a message is plain text or HTML. Like you can
>>>>>> configure which messages are HTML on name patterns (or a content
>>>>>> pattern, like all HTML values start with "<span>"). After all, without
>>>>>> such a rule, how do the developers themselves know if a message should
>>>>>> be HTML or plain text. Hopefully the have some exact policy for that.
>>>>>> If spring.message knows that rule too, then for HTML messages it
>>>>>> should return a TemplateMarkupOutputModel instead of a string, so it
>>>>>> will be automatically non-escaped. Then people can just write
>>>>>> ${spring.message("foo")} without worrying about `?noEsc`. And then we
>>>>>> certainly don't need the directive "overload" either.
>>>>>
>>>>> As far as I know, MessageTag extends HtmlEscapingAwareTag which has
>>>>> the following javadoc:
>>>>>
>>>>>  * <p>Provides a "htmlEscape" property for explicitly specifying whether 
>>>>> to
>>>>>  * apply HTML escaping. If not set, a page-level default (e.g. from the
>>>>>  * HtmlEscapeTag) or an application-wide default (the "defaultHtmlEscape"
>>>>>  * context-param in {@code web.xml}) is used.
>>>>
>>>> So then it seems we indeed need some spring library configuration
>>>> parameter that associates an output format (as in
>>>> http://freemarker.org/docs/dgui_misc_autoescaping.html) to each
>>>> message, based on patterns. By default everything should be just plain
>>>> text, to be on the safe side (i.e., auto-escaping will happen for
>>>> them, because ${} does that). The equivalent of "defaultHtmlEscape"
>>>> being on is that you assoicate "HTML" output format to all messages.
>>>
>>> +1
>>>
>>>>
>>>> This also reinforces that, at least in the first iteration,
>>>> spring.message should be function only, not a directive.
>>>> `${spring.message("foo")}` isn't more verbose than
>>>> `<@spring.message "foo" />` anyway.
>>>
>>> +1
>>>
>>>>
>>>> BTW, I think it may worth having a special syntax for message
>>>> insertion in the template language. For example,
>>>> %{label.greet user, today} would be a syntactical sugar for
>>>> ${someframewok.message('label.greet', user, today)}. But that's
>>>> another topic.
>>>
>>> Sounds promising!
>>>
>>> Woonsan
>>>
>>>>
>>>>> Regards,
>>>>>
>>>>> Woonsan
>>>>>
>>>>>>
>>>>>>>> By the way, I'm wondering what the best practices are in naming those
>>>>>>>> models. Should it be better with 'form', 'spring_form', 'spring.form',
>>>>>>>> or something else? Prefixing with something sounds safer to me.
>>>>>>>
>>>>>>> In the templates they should be accessible as <@spring.bind ...> and
>>>>>>> such. In the case of the form tags, as it's in a separate namespace in
>>>>>>> JSP, maybe it should be <@form.input ...> etc. (Though I'm not 100%
>>>>>>> sure if its practical the structure of the JSP taglibs so closely, and
>>>>>>
>>>>>> I meant: "if it's practical to follow the structure of the JSP taglibs
>>>>>> so closely"
>>>>>>
>>>>>>> maybe we could just go with <@spring.input ...>. I don't know.)
>>>>>>>
>>>>>>>> Regards,
>>>>>>>>
>>>>>>>> Woonsan
>>>>>>>>
>>>>>>>> [1]
>>>>>>>> https://docs.spring.io/spring/docs/current/spring-framework-reference/html/spring-tld.html
>>>>>>>> [2]
>>>>>>>> https://docs.spring.io/spring/docs/current/spring-framework-reference/html/spring-form-tld.html
>>>>>>>>
>>>>>>>>>
>>>>>>>>>>> Besides, just to be absolutely clear, I would merge your current PR 
>>>>>>>>>>> as
>>>>>>>>>>> well, if it doesn't raise licensing issues, which is of course a
>>>>>>>>>>> blocker.
>>>>>>>>>>
>>>>>>>>>> Sure, no worries. I was also under a concern about that and wanted to
>>>>>>>>>> get feedbacks before doing too much. ;-)
>>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>>
>>>>>>>>>> Woonsan
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Monday, August 7, 2017, 4:23:26 PM, Woonsan Ko wrote:
>>>>>>>>>>>
>>>>>>>>>>>> On Sun, Aug 6, 2017 at 6:14 AM, Daniel Dekany 
>>>>>>>>>>>> <ddek...@freemail.hu> wrote:
>>>>>>>>>>>>> The big problem is that spring.ftl is copyrighted by some of the
>>>>>>>>>>>>> Spring authors (or the Spring project as a whole - it's not 
>>>>>>>>>>>>> clear). So
>>>>>>>>>>>>> certainly we can't just copy it. It has to be reimplemented 
>>>>>>>>>>>>> without
>>>>>>>>>>>>> looking at the source, or something absurd like that. Perhaps the 
>>>>>>>>>>>>> best
>>>>>>>>>>>>> is to start out from the spring JSP taglib, as that's the most 
>>>>>>>>>>>>> widely
>>>>>>>>>>>>> used templating solution (I assume), so certainly that's the one 
>>>>>>>>>>>>> where
>>>>>>>>>>>>> all the features are exposed.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I wonder if using #import + FTL is the best way of adding
>>>>>>>>>>>>> framework-level functionality that's used by a lot of people. It's
>>>>>>>>>>>>> surely an OK way, but it's not the highest performance way. The 
>>>>>>>>>>>>> other
>>>>>>>>>>>>> way is using a shared variable (or some other kind of commonly 
>>>>>>>>>>>>> visible
>>>>>>>>>>>>> variable) and implement the library in Java using
>>>>>>>>>>>>> TemplateDirectiveModel-s and TemplateFunctionModel-s. It's less
>>>>>>>>>>>>> convenient than doing it in FTL, but it has to be done once, 
>>>>>>>>>>>>> while you
>>>>>>>>>>>>> save some resources everywhere where it's used. Though as most of
>>>>>>>>>>>>> these macros/functions are quite simple, I don't think the 
>>>>>>>>>>>>> performance
>>>>>>>>>>>>> difference matters much. But, it also avoids the legal issue 
>>>>>>>>>>>>> above. I
>>>>>>>>>>>>> mean, many of these function/macros are so trivial, that it's 
>>>>>>>>>>>>> hard to
>>>>>>>>>>>>> implement them on a different way in FTL than as it is in the 
>>>>>>>>>>>>> Spring
>>>>>>>>>>>>> source code, but if you implement them in Java, then it's much 
>>>>>>>>>>>>> harder
>>>>>>>>>>>>> to accuse anyone with stealing. (A minor annoyance right now is 
>>>>>>>>>>>>> that
>>>>>>>>>>>>> that part of the FreeMarker API is not yet settled; see 
>>>>>>>>>>>>> FREEMARKER-63,
>>>>>>>>>>>>> FREEMARKER-64, FREEMARKER-65. But hopefully it will be in a good
>>>>>>>>>>>>> enough shape soon. And see other thread; input is welcome!)
>>>>>>>>>>>>>
>>>>>>>>>>>>> As of template aliases, at the first glance that's fine. Note that
>>>>>>>>>>>>> there's MultiTemplateLoader which does something similar, but I 
>>>>>>>>>>>>> assume
>>>>>>>>>>>>> it would be less neat (and/or slower) to do this with that. (But 
>>>>>>>>>>>>> if
>>>>>>>>>>>>> the spring functionality won't be #import-ed after all (as 
>>>>>>>>>>>>> above), the
>>>>>>>>>>>>> whole thing can become unnecessary...)
>>>>>>>>>>>>
>>>>>>>>>>>> Thank you very much for sharing your insights. Greatly helpful 
>>>>>>>>>>>> advice.
>>>>>>>>>>>> I agree that it might be better with template model(s) rather than
>>>>>>>>>>>> library FTL in various aspects.
>>>>>>>>>>>> Let me try with that approach again and let you know soon with a 
>>>>>>>>>>>> new PR.
>>>>>>>>>>>>
>>>>>>>>>>>> Thank again,
>>>>>>>>>>>>
>>>>>>>>>>>> Woonsan
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Sunday, August 6, 2017, 7:22:00 AM, ASF GitHub Bot (JIRA) wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     [
>>>>>>>>>>>>>> https://issues.apache.org/jira/browse/FREEMARKER-55?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16115649#comment-16115649
>>>>>>>>>>>>>>  ]
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ASF GitHub Bot commented on FREEMARKER-55:
>>>>>>>>>>>>>> ------------------------------------------
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> GitHub user woonsan opened a pull request:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     https://github.com/apache/incubator-freemarker/pull/31
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     FREEMARKER-55: spring.ftl marco lib support
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     - Support <#import "/spring.ftl" as spring> like Spring 
>>>>>>>>>>>>>> Framework does.
>>>>>>>>>>>>>>     - By default, the system lib from /spring.ftl is read from 
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>> specific classpath, not from app's template path.
>>>>>>>>>>>>>>        The system template aliases map can be customized through
>>>>>>>>>>>>>> SpringResourceTemplateLoader.systemTemplateAliases property.
>>>>>>>>>>>>>>     - The same macros and functions are defined in /spring.ftl as
>>>>>>>>>>>>>> Spring Framework's, with syntax changes to comply with FM3.
>>>>>>>>>>>>>>     - Note: As the system template lib support is handled by
>>>>>>>>>>>>>> SpringTemplateLoader in this PR, it means developers should 
>>>>>>>>>>>>>> always
>>>>>>>>>>>>>> use SpringTemplateLoader directly or indirectly in order to use 
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>> system macro library. Please review this decision.
>>>>>>>>>>>>>>     - TODOs: review/test/refine each macro and functions in 
>>>>>>>>>>>>>> spring.ftl.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> You can merge this pull request into a Git repository by running:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     $ git pull https://github.com/woonsan/incubator-freemarker 
>>>>>>>>>>>>>> feature/FREEMARKER-55
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Alternatively you can review and apply these changes as the 
>>>>>>>>>>>>>> patch at:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     https://github.com/apache/incubator-freemarker/pull/31.patch
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> To close this pull request, make a commit to your master/trunk 
>>>>>>>>>>>>>> branch
>>>>>>>>>>>>>> with (at least) the following in the commit message:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     This closes #31
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ----
>>>>>>>>>>>>>> commit 8e0f33c419d982279d7fb22a9dfdc66f47abaf2c
>>>>>>>>>>>>>> Author: Woonsan Ko <woon...@apache.org>
>>>>>>>>>>>>>> Date:   2017-07-14T15:27:17Z
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     FREEMARKER-55: Renaming Freemarker to FreeMarker
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> commit ec8d687d4ce2c0e1bb3e3ca073b139eacc198527
>>>>>>>>>>>>>> Author: Woonsan Ko <woon...@apache.org>
>>>>>>>>>>>>>> Date:   2017-07-14T15:53:51Z
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     Merge branch '3' into feature/FREEMARKER-55
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> commit e7cb6f7cfc241689c85527971bf6e1ea7ced9127
>>>>>>>>>>>>>> Author: Woonsan Ko <woon...@apache.org>
>>>>>>>>>>>>>> Date:   2017-07-14T17:57:29Z
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     Merge branch '3' into feature/FREEMARKER-55
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> commit c6eb09de91e57035c1e0e3c4d3490b3b96622bab
>>>>>>>>>>>>>> Author: Woonsan Ko <woon...@apache.org>
>>>>>>>>>>>>>> Date:   2017-07-16T18:24:55Z
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     Merge branch '3' into feature/FREEMARKER-55
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> commit 870209fa8e0acd0bb3186053dfd549b5c758e37d
>>>>>>>>>>>>>> Author: Woonsan Ko <woon...@apache.org>
>>>>>>>>>>>>>> Date:   2017-07-18T00:38:03Z
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     Merge branch '3' into feature/FREEMARKER-55
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> commit 4481406a2f4eeb30d6d044a4ac158efab7ba7a7b
>>>>>>>>>>>>>> Author: Woonsan Ko <woon...@apache.org>
>>>>>>>>>>>>>> Date:   2017-08-06T01:28:54Z
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     Merge branch '3' into feature/FREEMARKER-55
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> commit fcd9e672ec515e3042bc5efd229b7d12c23e7d88
>>>>>>>>>>>>>> Author: Woonsan Ko <woon...@apache.org>
>>>>>>>>>>>>>> Date:   2017-08-06T05:09:12Z
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     FREEMARKER-55: system template lib for spring app: 
>>>>>>>>>>>>>> spring.ftl.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ----
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> FM3 freemarker-spring module, Web MVC support
>>>>>>>>>>>>>>> ---------------------------------------------
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>                 Key: FREEMARKER-55
>>>>>>>>>>>>>>>                 URL: 
>>>>>>>>>>>>>>> https://issues.apache.org/jira/browse/FREEMARKER-55
>>>>>>>>>>>>>>>             Project: Apache Freemarker
>>>>>>>>>>>>>>>          Issue Type: Task
>>>>>>>>>>>>>>>    Affects Versions: 3.0.0
>>>>>>>>>>>>>>>            Reporter: Daniel Dekany
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Add Spring "Web MVC framework" functionality to 
>>>>>>>>>>>>>>> freemarker-spring.
>>>>>>>>>>>>>>> This can be complex task (and the issue possibly has to be 
>>>>>>>>>>>>>>> subdivided), as it involves things like:
>>>>>>>>>>>>>>> * Some aspects of the FreeMarker 2 integration (developed by 
>>>>>>>>>>>>>>> the Spring developers) are quite confusing 
>>>>>>>>>>>>>>> ({{FreemarerConfigurer}}, etc.), and we are looking into if it 
>>>>>>>>>>>>>>> needs to be like that.
>>>>>>>>>>>>>>> * See if we can support {{@EnableWebMvc}} (note that FreeMarker 
>>>>>>>>>>>>>>> 2 support is hard coded into {{ViewResolverRegistry}}, which we 
>>>>>>>>>>>>>>> can't modify)
>>>>>>>>>>>>>>> * Creating custom directives/methods to expose Spring features 
>>>>>>>>>>>>>>> like the Spring JSP Tag Library does (but in a way that firs 
>>>>>>>>>>>>>>> FreeMarker better)
>>>>>>>>>>>>>>> * Expose JSP custom tag support from the {{freemarker-servlet}} 
>>>>>>>>>>>>>>> module.
>>>>>>>>>>>>>>> Depends on: FREEMARKER-54
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> This message was sent by Atlassian JIRA
>>>>>>>>>>>>>> (v6.4.14#64029)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>  Daniel Dekany
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Thanks,
>>>>>>>>>>>  Daniel Dekany
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Thanks,
>>>>>>>>>  Daniel Dekany
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> Thanks,
>>>>>>  Daniel Dekany
>>>>>>
>>>>>
>>>>
>>>> --
>>>> Thanks,
>>>>  Daniel Dekany
>>>>
>>
>
> --
> Thanks,
>  Daniel Dekany
>

Reply via email to