[ 
https://issues.apache.org/jira/browse/WW-3764?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13249177#comment-13249177
 ] 

Vijayakannan commented on WW-3764:
----------------------------------

Root cause for the above Exception:

FreemarkerTemplateEngine.java :- List<Template> templates = 
templateContext.getTemplate().getPossibleTemplates(this);

The above method call BaseTemplateEngine.java loadProperties(String propName) 
method to load the theme.properties for the template.

This method internally calls readProperty(String propName)method to load the 
properties file from file system /class path but not from application path.

 private Properties loadProperties(String propName) {
        InputStream is = readProperty(propName);
        Properties props = new Properties();
        if (is != null) {
            tryToLoadPropertiesFromStream(props, propName, is);
        }
        return props;
    }

 private InputStream readProperty(String propName) {
        InputStream is = tryReadingPropertyFileFromFileSystem(propName);
        if (is == null) {
            is = readPropertyFromClasspath(propName);
        }
        return is;
    }


Value of propName in my case ="WEB-INF/template/xhtml/theme.properties"

Please create unit test case for the 
loadProperties("WEB-INF/template/xhtml/theme.properties") method to understand 
the problem more details.

                
> Reading(theme.properties)PropertyFileFromFileSystem doesn't include 
> templatePath value from web.xml
> ---------------------------------------------------------------------------------------------------
>
>                 Key: WW-3764
>                 URL: https://issues.apache.org/jira/browse/WW-3764
>             Project: Struts 2
>          Issue Type: Temp
>    Affects Versions: 2.3.1
>         Environment: Tomcat v7.0
>            Reporter: Vijayakannan
>              Labels: theme.properties-loading-from-filesystem
>             Fix For: 2.5.x
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> There is an option in Struts2 to load the freemarker template from path by 
> setting in web.xml (templatePath).Templates are loaded from the file system 
> if we configure the file path.
> Also there is an option to extend the themes by setting the value for 
> "parent" key in the themes.properties within the template folder
> readProperty() method helps us to read the themes.properties file from the 
> file system and also from the classpath
> Aruguments :- 
> Combination of template directory ,template and file name "theme.properties"  
> are passed as propName
> This method doesn't help us to load the theme.properties from the specified 
> templatePath 
> private InputStream readProperty(String propName) {
>         InputStream is = tryReadingPropertyFileFromFileSystem(propName);
>         if (is == null) {
>             is = readPropertyFromClasspath(propName);
>         }
>         return is;
>     }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to