amel
Jan 7th, 2008, 07:20 AM
Hi Everyone
I am a little stuck and need some help. I am new to Spring and Velocity and have been going through a tutorial at: http://www.springframework.org/docs/MVC-step-by-step/Spring-MVC-step-by-step.html
Because i am working with Velocity, there is an appended page to the tutorial for the velocity dependent requirements here: http://wiki.apache.org/jakarta-velocity/VelocityAndSpringStepByStep
I have got to step 17 and it is giving me errors. The template is:
<html>
<head><title>#springMessage("title")</title></head>
<body>
<h1>#springMessage("heading")</h1>
<p>#springMessage("greeting") ${model.now}
</p>
<h3>Products</h3>
#foreach ($prod in ${model.products})
${prod.description} <i>${prod.price}</i><br><br>
#end
</body>
</html>
The springapp-servlet.xml is as follows:
<beans>
<bean id="springappController" class="SpringappController"/>
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlH andlerMapping">
<property name="mappings">
<props>
<prop key="/hello.htm">springappController</prop>
</props>
</property>
</bean>
<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.Velo cityConfigurer">
<property name="resourceLoaderPath">
<value>/</value>
</property>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.Velo cityViewResolver">
<property name="prefix"><value>/WEB-INF/velocity/</value></property>
<property name="suffix"><value>.vm</value></property>
<property name="exposeSpringMacroHelpers"><value>true</value></property>
</bean>
</beans>
The controller code at this point of the tutorial is:
package springapp.web;
import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
import java.util.HashMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import bus.Product;
import bus.ProductManager;
public class SpringappController implements Controller {
protected final Log logger = LogFactory.getLog(getClass());
private ProductManager prodMan;
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/** Logger for this class and subclasses */
logger.info("SpringappController - returning hello view");
String now = (new java.util.Date()).toString();
this.prodMan = new ProductManager();
Map myModel = new HashMap();
myModel.put("now", now);
myModel.put("products", getProductManager().getProducts());
return new ModelAndView("hello", "model", myModel);
}
public void setProductManager(ProductManager pm) {
prodMan = pm;
}
public ProductManager getProductManager() {
return prodMan;
}
}
When i try to compile it i get the follow errors:
org.springframework.web.util.NestedServletExceptio n: Method invocation failed during rendering of Velocity view with name 'hello': Invocation of method 'getMessage' in class org.springframework.web.servlet.support.RequestCon text threw exception org.springframework.context.NoSuchMessageException : No message found under code 'title' for locale 'en_US'. @ /WEB-INF/velocity/hello.vm[1,28]; reference [springMacroRequestContext], method 'getMessage'; nested exception is org.springframework.context.NoSuchMessageException : No message found under code 'title' for locale 'en_US'.
org.springframework.web.servlet.view.velocity.Velo cityView.mergeTemplate(VelocityView.java:556)
org.springframework.web.servlet.view.velocity.Velo cityView.doRender(VelocityView.java:498)
org.springframework.web.servlet.view.velocity.Velo cityView.renderMergedTemplateModel(VelocityView.ja va:320)
org.springframework.web.servlet.view.AbstractTempl ateView.renderMergedOutputModel(AbstractTemplateVi ew.java:174)
org.springframework.web.servlet.view.AbstractView. render(AbstractView.java:239)
org.springframework.web.servlet.DispatcherServlet. render(DispatcherServlet.java:1158)
org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:900)
org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:808)
org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:476)
org.springframework.web.servlet.FrameworkServlet.d oGet(FrameworkServlet.java:431)
javax.servlet.http.HttpServlet.service(HttpServlet .java:690)
javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
root cause
org.springframework.context.NoSuchMessageException : No message found under code 'title' for locale 'en_US'.
org.springframework.context.support.DelegatingMess ageSource.getMessage(DelegatingMessageSource.java: 65)
org.springframework.context.support.AbstractApplic ationContext.getMessage(AbstractApplicationContext .java:986)
org.springframework.web.servlet.support.RequestCon text.getMessage(RequestContext.java:521)
org.springframework.web.servlet.support.RequestCon text.getMessage(RequestContext.java:487)
sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Native MethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(De legatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.apache.velocity.util.introspection.UberspectIm pl$VelMethodImpl.invoke(UberspectImpl.java:295)
org.apache.velocity.runtime.parser.node.ASTMethod. execute(ASTMethod.java:245)
org.apache.velocity.runtime.parser.node.ASTReferen ce.execute(ASTReference.java:203)
org.apache.velocity.runtime.parser.node.ASTReferen ce.render(ASTReference.java:294)
org.apache.velocity.runtime.parser.node.SimpleNode .render(SimpleNode.java:318)
org.apache.velocity.runtime.directive.VelocimacroP roxy.render(VelocimacroProxy.java:194)
org.apache.velocity.runtime.parser.node.ASTDirecti ve.render(ASTDirective.java:170)
org.apache.velocity.runtime.parser.node.SimpleNode .render(SimpleNode.java:318)
org.apache.velocity.Template.merge(Template.java:2 54)
org.springframework.web.servlet.view.velocity.Velo cityView.mergeTemplate(VelocityView.java:553)
org.springframework.web.servlet.view.velocity.Velo cityView.doRender(VelocityView.java:498)
org.springframework.web.servlet.view.velocity.Velo cityView.renderMergedTemplateModel(VelocityView.ja va:320)
org.springframework.web.servlet.view.AbstractTempl ateView.renderMergedOutputModel(AbstractTemplateVi ew.java:174)
org.springframework.web.servlet.view.AbstractView. render(AbstractView.java:239)
org.springframework.web.servlet.DispatcherServlet. render(DispatcherServlet.java:1158)
org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:900)
org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:808)
org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:476)
org.springframework.web.servlet.FrameworkServlet.d oGet(FrameworkServlet.java:431)
javax.servlet.http.HttpServlet.service(HttpServlet .java:690)
javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
I have been trying to solve the problem for a few days now and have had no luck, so any help is appreciated.
I am a little stuck and need some help. I am new to Spring and Velocity and have been going through a tutorial at: http://www.springframework.org/docs/MVC-step-by-step/Spring-MVC-step-by-step.html
Because i am working with Velocity, there is an appended page to the tutorial for the velocity dependent requirements here: http://wiki.apache.org/jakarta-velocity/VelocityAndSpringStepByStep
I have got to step 17 and it is giving me errors. The template is:
<html>
<head><title>#springMessage("title")</title></head>
<body>
<h1>#springMessage("heading")</h1>
<p>#springMessage("greeting") ${model.now}
</p>
<h3>Products</h3>
#foreach ($prod in ${model.products})
${prod.description} <i>${prod.price}</i><br><br>
#end
</body>
</html>
The springapp-servlet.xml is as follows:
<beans>
<bean id="springappController" class="SpringappController"/>
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlH andlerMapping">
<property name="mappings">
<props>
<prop key="/hello.htm">springappController</prop>
</props>
</property>
</bean>
<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.Velo cityConfigurer">
<property name="resourceLoaderPath">
<value>/</value>
</property>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.Velo cityViewResolver">
<property name="prefix"><value>/WEB-INF/velocity/</value></property>
<property name="suffix"><value>.vm</value></property>
<property name="exposeSpringMacroHelpers"><value>true</value></property>
</bean>
</beans>
The controller code at this point of the tutorial is:
package springapp.web;
import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
import java.util.HashMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import bus.Product;
import bus.ProductManager;
public class SpringappController implements Controller {
protected final Log logger = LogFactory.getLog(getClass());
private ProductManager prodMan;
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/** Logger for this class and subclasses */
logger.info("SpringappController - returning hello view");
String now = (new java.util.Date()).toString();
this.prodMan = new ProductManager();
Map myModel = new HashMap();
myModel.put("now", now);
myModel.put("products", getProductManager().getProducts());
return new ModelAndView("hello", "model", myModel);
}
public void setProductManager(ProductManager pm) {
prodMan = pm;
}
public ProductManager getProductManager() {
return prodMan;
}
}
When i try to compile it i get the follow errors:
org.springframework.web.util.NestedServletExceptio n: Method invocation failed during rendering of Velocity view with name 'hello': Invocation of method 'getMessage' in class org.springframework.web.servlet.support.RequestCon text threw exception org.springframework.context.NoSuchMessageException : No message found under code 'title' for locale 'en_US'. @ /WEB-INF/velocity/hello.vm[1,28]; reference [springMacroRequestContext], method 'getMessage'; nested exception is org.springframework.context.NoSuchMessageException : No message found under code 'title' for locale 'en_US'.
org.springframework.web.servlet.view.velocity.Velo cityView.mergeTemplate(VelocityView.java:556)
org.springframework.web.servlet.view.velocity.Velo cityView.doRender(VelocityView.java:498)
org.springframework.web.servlet.view.velocity.Velo cityView.renderMergedTemplateModel(VelocityView.ja va:320)
org.springframework.web.servlet.view.AbstractTempl ateView.renderMergedOutputModel(AbstractTemplateVi ew.java:174)
org.springframework.web.servlet.view.AbstractView. render(AbstractView.java:239)
org.springframework.web.servlet.DispatcherServlet. render(DispatcherServlet.java:1158)
org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:900)
org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:808)
org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:476)
org.springframework.web.servlet.FrameworkServlet.d oGet(FrameworkServlet.java:431)
javax.servlet.http.HttpServlet.service(HttpServlet .java:690)
javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
root cause
org.springframework.context.NoSuchMessageException : No message found under code 'title' for locale 'en_US'.
org.springframework.context.support.DelegatingMess ageSource.getMessage(DelegatingMessageSource.java: 65)
org.springframework.context.support.AbstractApplic ationContext.getMessage(AbstractApplicationContext .java:986)
org.springframework.web.servlet.support.RequestCon text.getMessage(RequestContext.java:521)
org.springframework.web.servlet.support.RequestCon text.getMessage(RequestContext.java:487)
sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Native MethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(De legatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.apache.velocity.util.introspection.UberspectIm pl$VelMethodImpl.invoke(UberspectImpl.java:295)
org.apache.velocity.runtime.parser.node.ASTMethod. execute(ASTMethod.java:245)
org.apache.velocity.runtime.parser.node.ASTReferen ce.execute(ASTReference.java:203)
org.apache.velocity.runtime.parser.node.ASTReferen ce.render(ASTReference.java:294)
org.apache.velocity.runtime.parser.node.SimpleNode .render(SimpleNode.java:318)
org.apache.velocity.runtime.directive.VelocimacroP roxy.render(VelocimacroProxy.java:194)
org.apache.velocity.runtime.parser.node.ASTDirecti ve.render(ASTDirective.java:170)
org.apache.velocity.runtime.parser.node.SimpleNode .render(SimpleNode.java:318)
org.apache.velocity.Template.merge(Template.java:2 54)
org.springframework.web.servlet.view.velocity.Velo cityView.mergeTemplate(VelocityView.java:553)
org.springframework.web.servlet.view.velocity.Velo cityView.doRender(VelocityView.java:498)
org.springframework.web.servlet.view.velocity.Velo cityView.renderMergedTemplateModel(VelocityView.ja va:320)
org.springframework.web.servlet.view.AbstractTempl ateView.renderMergedOutputModel(AbstractTemplateVi ew.java:174)
org.springframework.web.servlet.view.AbstractView. render(AbstractView.java:239)
org.springframework.web.servlet.DispatcherServlet. render(DispatcherServlet.java:1158)
org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:900)
org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:808)
org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:476)
org.springframework.web.servlet.FrameworkServlet.d oGet(FrameworkServlet.java:431)
javax.servlet.http.HttpServlet.service(HttpServlet .java:690)
javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
I have been trying to solve the problem for a few days now and have had no luck, so any help is appreciated.