Re: Overriding Templates
I have reported it to JIRA as a BUG. https://issues.apache.org/jira/browse/WW-3522 If the develop team confirm that it really is a bug, then I will add information to the docs. - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org
RE: Overriding Templates
Hi Li / Maurizio, thanks for your replies - i did receive the answer from another user yesterday too, he sent the following Actually, I found the solution, and it works for me: http://old.nabble.com/-S2--2.2.1-possible-freemarker-template-bug-td29462347.html Just add this to your web.xml: context-param param-nametemplatePath/param-name param-valuetemplate/param-value /context-param it seems it has been noted by others (see link) and is a bug of sorts - could be it was supposed to be this way and struts2.0.11 didn't enforce it or it was just changed in later version and developer didn't realise full implications. anyway, the addition of the context-param sorted out my problem. thanks for your responses adam Date: Wed, 20 Oct 2010 12:01:34 +0900 Subject: Re: Overriding Templates From: liying.cn.2...@gmail.com To: user@struts.apache.org Hi Maurizio: In this document: http://struts.apache.org/2.2.1/docs/template-loading.html It says the template should be searched in (in this order): 1, web app folder 2, class path But i have read the Struts2.2.1 source code, it creates TemplateLoader in a different order, as i described in my earlier mail. And, as adam said, the template under web app folder worked correctly in elder version of Struts2. So i think, this is maybe a BUG of Struts2, or lack of updating document. Maybe we should send this issue to the development team of Struts2. 2010/10/20 Maurizio Cucchiara maurizio.cucchi...@gmail.com: @Adam and they were placed into WebContent\template\simple folder you should start to investigate about your path correctness IMHO . Struts usually finds freemarker template inside your classpath. In order to enable struts to find your custom template file, you should ensure that template files reside inside the WEB-INF/classes/template/simple folder Hope this help -- Maurizio Cucchiara - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org
Re: Overriding Templates
Just add this to your web.xml: context-param param-nametemplatePath/param-name param-valuetemplate/param-value /context-param The param [templatePath] can start with only class:// or file://. Otherwise, struts will ignore it and do not create a TemplateLoader for it. (See method [init] and [createTemplateLoader] of class [org.apache.struts2.views.freemarker.FreemarkerManager]) So, the value template means noting, it will get the same result as setting it to a empty string or anything else. - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org
Re: Overriding Templates
So you're saying it doesn't work for him? Dave On Wed, Oct 20, 2010 at 5:26 AM, Li Ying liying.cn.2...@gmail.com wrote: Just add this to your web.xml: context-param param-nametemplatePath/param-name param-valuetemplate/param-value /context-param The param [templatePath] can start with only class:// or file://. Otherwise, struts will ignore it and do not create a TemplateLoader for it. (See method [init] and [createTemplateLoader] of class [org.apache.struts2.views.freemarker.FreemarkerManager]) So, the value template means noting, it will get the same result as setting it to a empty string or anything else. - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org
Re: Overriding Templates
No, I mean it works, but the value template has no meaning. Actually, if you set param [templatePath] (or [TemplatePath]) to any string which not start with class:// or file://, you will get the same result: templates under web root folder will be loaded. If you delete this param from web.xml, Struts2.2.1 will use the default setting (which is class://) to create a ClassTemplateLoader. And this ClassTemplateLoader will get a higher priority than WebappTemplateLoader, that make templates under web root folder not loaded. I think this may be a BUG of Struts2, because this behavior is different from the Struts2 document. And, as adam said, it also different from the old version of Struts2. 2010/10/20 Dave Newton davelnew...@gmail.com: So you're saying it doesn't work for him? Dave On Wed, Oct 20, 2010 at 5:26 AM, Li Ying liying.cn.2...@gmail.com wrote: Just add this to your web.xml: context-param param-nametemplatePath/param-name param-valuetemplate/param-value /context-param The param [templatePath] can start with only class:// or file://. Otherwise, struts will ignore it and do not create a TemplateLoader for it. (See method [init] and [createTemplateLoader] of class [org.apache.struts2.views.freemarker.FreemarkerManager]) So, the value template means noting, it will get the same result as setting it to a empty string or anything else. - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org
Re: Overriding Templates
It's actually more likely the documentation needs to be updated. Perhaps you could get edit access to the wiki and update them? Dave On Wed, Oct 20, 2010 at 8:47 AM, Li Ying liying.cn.2...@gmail.com wrote: No, I mean it works, but the value template has no meaning. Actually, if you set param [templatePath] (or [TemplatePath]) to any string which not start with class:// or file://, you will get the same result: templates under web root folder will be loaded. If you delete this param from web.xml, Struts2.2.1 will use the default setting (which is class://) to create a ClassTemplateLoader. And this ClassTemplateLoader will get a higher priority than WebappTemplateLoader, that make templates under web root folder not loaded. I think this may be a BUG of Struts2, because this behavior is different from the Struts2 document. And, as adam said, it also different from the old version of Struts2. 2010/10/20 Dave Newton davelnew...@gmail.com: So you're saying it doesn't work for him? Dave On Wed, Oct 20, 2010 at 5:26 AM, Li Ying liying.cn.2...@gmail.com wrote: Just add this to your web.xml: context-param param-nametemplatePath/param-name param-valuetemplate/param-value /context-param The param [templatePath] can start with only class:// or file://. Otherwise, struts will ignore it and do not create a TemplateLoader for it. (See method [init] and [createTemplateLoader] of class [org.apache.struts2.views.freemarker.FreemarkerManager]) So, the value template means noting, it will get the same result as setting it to a empty string or anything else. - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org
Re: Overriding Templates
If I am the author of this code, i think the priority order of these 3 TemplateLoaders should be: 1, WebappTemplateLoader 2,ClassTemplateLoader (when value of param [templatePath] is string starts with class://) or FileTemplateLoader(when value of param [templatePath] is string starts with file://) 3, StrutsClassTemplateLoader But I don't know what the intention of the author is. Is it a BUG or lack of updating document? I am not sure. So maybe we should send our investigation result to the develop team, see what they say. 2010/10/20 Dave Newton davelnew...@gmail.com: It's actually more likely the documentation needs to be updated. Perhaps you could get edit access to the wiki and update them? Dave - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org
Re: Overriding Templates
You know that (a) the dev team reads this list, and (b) I'm on the dev team, right? On Wed, Oct 20, 2010 at 9:19 AM, Li Ying liying.cn.2...@gmail.com wrote: If I am the author of this code, i think the priority order of these 3 TemplateLoaders should be: 1, WebappTemplateLoader 2,ClassTemplateLoader (when value of param [templatePath] is string starts with class://) or FileTemplateLoader(when value of param [templatePath] is string starts with file://) 3, StrutsClassTemplateLoader But I don't know what the intention of the author is. Is it a BUG or lack of updating document? I am not sure. So maybe we should send our investigation result to the develop team, see what they say. 2010/10/20 Dave Newton davelnew...@gmail.com: It's actually more likely the documentation needs to be updated. Perhaps you could get edit access to the wiki and update them? Dave - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org
Re: Overriding Templates
Actually I did not know about these, Sorry. And (A)I am just a new guy of Struts2 community, if I put some message into the Struts2 docs and it is not right, I will mislead so many users, I will feel so~~~ sorry. (B)As you can see, my English is not good. 2010/10/20 Dave Newton davelnew...@gmail.com: You know that (a) the dev team reads this list, and (b) I'm on the dev team, right? - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org
Re: Overriding Templates
(A)I am just a new guy of Struts2 community, if I put some message into the Struts2 docs and it is not right, I will mislead so many users, I will feel so~~~ sorry. Honestly, I'd rather see the documentation reflect current behavior, whether or not the behavior itself is correct. And if the documentation is *already* wrong... Plus if something gets in there that isn't well-written, it'll be corrected at some point. (B)As you can see, my English is not good. Better than my Mandarin and Cantonese ;) Dave - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org
Re: Overriding Templates
OK, I will do it, But maybe tomorrow, because the local time is over 11PM now. 2010/10/20 Dave Newton davelnew...@gmail.com: (A)I am just a new guy of Struts2 community, if I put some message into the Struts2 docs and it is not right, I will mislead so many users, I will feel so~~~ sorry. Honestly, I'd rather see the documentation reflect current behavior, whether or not the behavior itself is correct. And if the documentation is *already* wrong... Plus if something gets in there that isn't well-written, it'll be corrected at some point. (B)As you can see, my English is not good. Better than my Mandarin and Cantonese ;) Dave - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org
Re: Overriding Templates
All help is greatly appreciated :) Thanks! Dave On Wed, Oct 20, 2010 at 10:26 AM, Li Ying liying.cn.2...@gmail.com wrote: OK, I will do it, But maybe tomorrow, because the local time is over 11PM now. 2010/10/20 Dave Newton davelnew...@gmail.com: (A)I am just a new guy of Struts2 community, if I put some message into the Struts2 docs and it is not right, I will mislead so many users, I will feel so~~~ sorry. Honestly, I'd rather see the documentation reflect current behavior, whether or not the behavior itself is correct. And if the documentation is *already* wrong... Plus if something gets in there that isn't well-written, it'll be corrected at some point. (B)As you can see, my English is not good. Better than my Mandarin and Cantonese ;) Dave - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org
RE: Overriding Templates
The theme is set to simple as was for struts 2.0.11 My struts.xml is very plain and i don't see it would help with this particular issue. My jsp contains the following div style=text-align: center; margin-bottom: 10px; padding-top: 5px s:actionmessage theme=simple/ s:actionerror theme=simple/ /div The revised templates were overriding the jar templates in 2.0.11 just not in 2.2.1 - no code changes have been made so it must be something in how latest struts2 is working. Looking at the templates for action message/errors in latest jar - they have additonal text regarding parameters etc.. i wondered if maybe the amended templates are now invalid in some way and so it reverts back to templates in jar file - no errors are logged though. My action error template contains the following #if (actionErrors?exists actionErrors?size 0) div style=PADDING-BOTTOM: 10px; PADDING-TOP: 10px; WIDTH: 100%; text-align: center #list actionErrors as error p class=ui-state-highlight${error}/p /#list /div /#if Adam Date: Tue, 19 Oct 2010 11:39:13 +0900 Subject: Re: Overriding Templates From: liying.cn.2...@gmail.com To: user@struts.apache.org Hi adam: what theme are you using? The default theme in Struts2.2.1 is [xhtml]. Maybe you need change the default theme or the theme of your tag to [simple]. Can you show us your setting file(struts.xml and so on) and your jsp code? 2010/10/19 adam pinder apin...@hotmail.co.uk: I have just upgraded struts2 version from 2.0.11 to 2.2.1 and one issue seems to be that i have amended templates actionerror.ftl actionmessage.ftl and they were placed into WebContent\template\simple folder in the web app and with 2.0.11 they overrided the templates in the struts2 core jar file correctly... with 2.2.1 it's now always using the templates in the struts2 core jar even though i can see inside this jar the folder structure and filenames have not changed.. with 2.2.1 do you need to place the overriding templates in a different folder for it to work ? note. i have upgraded other jars as it seemed appropriate for this struts version. thanks adam - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org
Re: Overriding Templates
With a lot of debugging, I think i have found what's wrong. If you use the default setting, In method [createTemplateLoader] of class [org.apache.struts2.views.freemarker.FreemarkerManager], Struts will create 3 TemplateLoader which is: 1,ClassTemplateLoader, which will load Template from class url 2,WebappTemplateLoader, which will load Template from WebApp folder 3,StrutsClassTemplateLoader, I don't known what different with ClassTemplateLoader The 3 TemplateLoader will be executed in this order, which means, the ClassTemplateLoader get higher priority than WebappTemplateLoader. (See method [findTemplateSource] of class [freemarker.cache.MultiTemplateLoader]) So, if you simply put your template under the WebApp folder, it will not be used, because the ClassTemplateLoader will load the old template from struts2-core-2.2.1.jar. I think it may be a Struts2 bug, because this result is obviously different from the Struts2 document, but i am not very sure about it. Before they fix this bug, i suggest you add this setting in your web.xml: context-param param-nameTemplatePath/param-name param-value/param-value /context-param It will make FreemarkerManager not to create ClassTemplateLoader, so the WebappTemplateLoader will get highest priority. I tested it, and it works in my environment. Or you can set this parameter to: context-param param-nameTemplatePath/param-name param-valueclass://package/param-value /context-param and put your template under the [package]. But i did not test this solution. - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org
Re: Overriding Templates
@Adam and they were placed into WebContent\template\simple folder you should start to investigate about your path correctness IMHO . Struts usually finds freemarker template inside your classpath. In order to enable struts to find your custom template file, you should ensure that template files reside inside the WEB-INF/classes/template/simple folder Hope this help -- Maurizio Cucchiara - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org
Re: Overriding Templates
Hi Maurizio: In this document: http://struts.apache.org/2.2.1/docs/template-loading.html It says the template should be searched in (in this order): 1, web app folder 2, class path But i have read the Struts2.2.1 source code, it creates TemplateLoader in a different order, as i described in my earlier mail. And, as adam said, the template under web app folder worked correctly in elder version of Struts2. So i think, this is maybe a BUG of Struts2, or lack of updating document. Maybe we should send this issue to the development team of Struts2. 2010/10/20 Maurizio Cucchiara maurizio.cucchi...@gmail.com: @Adam and they were placed into WebContent\template\simple folder you should start to investigate about your path correctness IMHO . Struts usually finds freemarker template inside your classpath. In order to enable struts to find your custom template file, you should ensure that template files reside inside the WEB-INF/classes/template/simple folder Hope this help -- Maurizio Cucchiara - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org
Overriding Templates
I have just upgraded struts2 version from 2.0.11 to 2.2.1 and one issue seems to be that i have amended templates actionerror.ftl actionmessage.ftl and they were placed into WebContent\template\simple folder in the web app and with 2.0.11 they overrided the templates in the struts2 core jar file correctly... with 2.2.1 it's now always using the templates in the struts2 core jar even though i can see inside this jar the folder structure and filenames have not changed.. with 2.2.1 do you need to place the overriding templates in a different folder for it to work ? note. i have upgraded other jars as it seemed appropriate for this struts version. thanks adam
Re: Overriding Templates
Hi adam: what theme are you using? The default theme in Struts2.2.1 is [xhtml]. Maybe you need change the default theme or the theme of your tag to [simple]. Can you show us your setting file(struts.xml and so on) and your jsp code? 2010/10/19 adam pinder apin...@hotmail.co.uk: I have just upgraded struts2 version from 2.0.11 to 2.2.1 and one issue seems to be that i have amended templates actionerror.ftl actionmessage.ftl and they were placed into WebContent\template\simple folder in the web app and with 2.0.11 they overrided the templates in the struts2 core jar file correctly... with 2.2.1 it's now always using the templates in the struts2 core jar even though i can see inside this jar the folder structure and filenames have not changed.. with 2.2.1 do you need to place the overriding templates in a different folder for it to work ? note. i have upgraded other jars as it seemed appropriate for this struts version. thanks adam - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org