Hello People,

I have a porblem with Velocity Template Engine. Please, help me.

I have maked a general html render servlet. It is receiving the all
*.html requests (GET or POST) and they have a parameter. For example:
http://localhost:8080/oxigen/welcome.html?class=com.remal.oxigen.ui.webc
ontent.welcome.WelcomePage or
http://localhost:8080/oxigen/login.html?class=com.remal.oxigen.ui.compon
ents.login.LoginPage


In processRequest method of my servlet will render current html page:

ControllerServlet.java:
private void processRequest(HttpServletRequest request,
HttpServletResponse response)
{
    ...
    //// get parameter from GET or POST request
    String className =
StringUtils.defaultString(request.getParameter("class"), "null");

    Class instance = Class.forName(className);
    ConvertableToHTML o = (ConvertableToHTML)instance.newInstance();
    o.setRequest(request);
    o.setResponse(response);
    o.setLanguage( getLanguageCode() );
    ....

    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    out.println( o.toHTML() );
    out.close();
    ...
}


WelcomePage.java:
package com.remal.oxigen.ui.webcontent.welcome;
public class WelcomePage implements ConvertableToHTML
{
    ...
    public String toHTML()
    {
        ...
        String packageName = this.getClass().getCanonicalName();
    
        Properties p = new Properties();
        p.setProperty("resource.loader", "class");
        p.setProperty("class.resource.loader.class",
"org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
            
        VelocityEngine engine = new VelocityEngine();
        //engine.init(p);
        engine.init();
        //Template template = engine.getTemplate("classes/" +
packageName.replace('.', '/') + ".html");
        //Template template =
engine.getTemplate(this.getClass().getSimpleName() + ".html");
        Template template = engine.getTemplate(packageName + ".html");

        VelocityContext velocityContext = new VelocityContext();
        ...
        velocityContext.put(<keys>, <values>);
            
        writer = new StringWriter();
        template.merge(velocityContext, writer);
        return writer.toString();        
    }
}

Part of file structure of my project:
my.war
    / index.htm
    / WEB_INF
        /classes
            /com
                /remal
                    /oxigen
                        /ui
                            /webcontent
                                /welcome
                                    /WelcomePage.class
                                    /WelcomePage.html


When I try to use whatever url, for example
http://localhost:8080/oxigen/welcome.html?class=com.remal.oxigen.ui.webc
ontent.welcome.WelcomePage I have a exception because the getTemplate
method can not found current velocity template resource file within war
file. 

org.apache.velocity.exception.ResourceNotFoundException: Unable to find
resource 'com.remal.oxigen.ui.webcontent.welcome.WelcomePage.html' at
org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(Re
sourceManagerImpl.java:452) at
org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(Res
ourceManagerImpl.java:335) at
org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.
java:1102) at
org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.
java:1077) at
org.apache.velocity.app.VelocityEngine.getTemplate(VelocityEngine.java:5
28) at com.remal.oxigen.ui.ConvertToHTML.toHTML
...

What is the good input parameter for getTemplate(...) ?

SoMa


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Ezen uzenet es annak barmely csatolt anyaga bizalmas, jogi vedelem alatt all, a 
nyilvanos kozlestol vedett.
Az uzenetet kizarolag a cimzett, illetve az altala meghatalmazottak 
hasznalhatjak fel. Ha On nem az uzenet cimzettje, 
ugy kerjuk, hogy telefonon, vagy e-mail-ben ertesitse errol az uzenet kuldojet 
es torolje az uzenetet, 
valamint annak osszes csatolt mellekletet a rendszerebol. Ha On nem az uzenet 
cimzettje, abban az esetben tilos az 
uzenetet vagy annak barmely csatolt mellekletet lemasolnia, elmentenie, az 
uzenet tartalmat barkivel kozolnie 
vagy azzal visszaelnie.


This message and any attachment are confidential and are legally privileged. It 
is intended solely for the use of 
the individual or entity to whom it is addressed and others authorised to 
receive it. If you are not the intended 
recipient, please telephone or email the sender and delete this message and any 
attachment from your system. 
Please note that any dissemination, distribution, copying or use of or reliance 
upon the information contained in 
and transmitted with this e-mail by or to anyone other than the recipient 
designated above by the sender is 
unauthorised and strictly prohibited.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to