2012-09-19 3 views
2

Je suis confronté à un problème très ennuyeux avec Spring Roo et Tomcat. Après la roo printemps tutoriel boutique de pizza que j'ai donné les commandes suivantes:Printemps Roo Tomcat question

project com.springsource.pizzashop 

// Setup JPA persistence using EclipseLink and H2 
jpa setup --provider ECLIPSELINK --database H2_IN_MEMORY 

// Create domain entities 
entity jpa --class ~.domain.Base --testAutomatically 
field string --fieldName name --sizeMin 2 --notNull 

entity jpa --class ~.domain.Topping --testAutomatically 
field string --fieldName name --sizeMin 2 --notNull 

entity jpa --class ~.domain.Pizza --testAutomatically 
field string --fieldName name --notNull --sizeMin 2 
field number --fieldName price --type java.math.BigDecimal 
field set --fieldName toppings --type ~.domain.Topping 
field reference --fieldName base --type ~.domain.Base 

entity jpa --class ~.domain.PizzaOrder --testAutomatically --identifierType ~.domain.PizzaOrderPk 
field string --fieldName name --notNull --sizeMin 2 
field string --fieldName address --sizeMax 30 
field number --fieldName total --type java.math.BigDecimal 
field date --fieldName deliveryDate --type java.util.Date 
field set --fieldName pizzas --type ~.domain.Pizza 

field string --fieldName shopCountry --class ~.domain.PizzaOrderPk 
field string --fieldName shopCity 
field string --fieldName shopName 

// Offer JSON remoting for all domain types trough Spring MVC 
json all --deepSerialize 
web mvc json setup 
web mvc json all 

web mvc setup 
web mvc all --package ~.web 

Ensuite, à partir de la ligne de commande I appel:

mvn tomcat:run 

Lorsque j'ajoute un nouveau champ dans l'entité Pizza je reçois le erreur:

SEVERE: Servlet.service() for servlet [pizza] in context with path [/pizza] threw exception [Request processing failed; nested exception is org.apache.tiles.impl.CannotRenderException: ServletException including path '/WEB-INF/layouts/default.jspx'.] with root cause 
javax.servlet.jsp.JspTagException: No message found under code 'label_com_springsource_pizzashop_domain_pizza_newfield' for locale 'el_GR'. 
    at org.springframework.web.servlet.tags.MessageTag.doStartTagInternal(MessageTag.java:184) 
    at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79) 
    at org.apache.jsp.tag.web.form.fields.input_tagx._jspx_meth_spring_005fmessage_005f0(input_tagx.java:661) 
    at org.apache.jsp.tag.web.form.fields.input_tagx._jspx_meth_c_005fif_005f3(input_tagx.java:584) 
    at org.apache.jsp.tag.web.form.fields.input_tagx.doTag(input_tagx.java:338) 
    at org.apache.jsp.WEB_002dINF.views.pizzas.create_jspx._jspx_meth_field_005finput_005f6(create_jspx.java:329) 
    at org.apache.jsp.WEB_002dINF.views.pizzas.create_jspx.access(create_jspx.java:310) 
    at org.apache.jsp.WEB_002dINF.views.pizzas.create_jspx$Helper.invoke0(create_jspx.java:385) 
    at org.apache.jsp.WEB_002dINF.views.pizzas.create_jspx$Helper.invoke(create_jspx.java:402) 
    at org.apache.jsp.tag.web.form.create_tagx$Helper.invoke0(create_tagx.java:697) 
    at org.apache.jsp.tag.web.form.create_tagx$Helper.invoke(create_tagx.java:738) 
    at org.apache.jsp.tag.web.util.panel_tagx._jspx_meth_c_005fif_005f0(panel_tagx.java:193) 
    at org.apache.jsp.tag.web.util.panel_tagx.doTag(panel_tagx.java:139) 
    at org.apache.jsp.tag.web.form.create_tagx.doTag(create_tagx.java:242) 
    at org.apache.jsp.WEB_002dINF.views.pizzas.create_jspx._jspx_meth_form_005fcreate_005f0(create_jspx.java:109) 
    at org.apache.jsp.WEB_002dINF.views.pizzas.create_jspx._jspService(create_jspx.java:73) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684) 
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:593) 
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:530) 
    at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:927) 
    at org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:684) 
    at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:678) 
    at org.apache.tiles.jsp.context.JspTilesRequestContext.include(JspTilesRequestContext.java:103) 
    at org.apache.tiles.jsp.context.JspTilesRequestContext.dispatch(JspTilesRequestContext.java:96) 
    at org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44) 
    at org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106) 
    at org.apache.tiles.renderer.impl.ChainedDelegateAttributeRenderer.write(ChainedDelegateAttributeRenderer.java:76) 
    at org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:336) 
    at org.apache.tiles.template.InsertAttributeModel.renderAttribute(InsertAttributeModel.java:210) 
    at org.apache.tiles.template.InsertAttributeModel.end(InsertAttributeModel.java:126) 
    at org.apache.tiles.jsp.taglib.InsertAttributeTag.doTag(InsertAttributeTag.java:311) 
    at org.apache.jsp.WEB_002dINF.layouts.default_jspx._jspx_meth_tiles_005finsertAttribute_005f2(default_jspx.java:233) 
    at org.apache.jsp.WEB_002dINF.layouts.default_jspx._jspService(default_jspx.java:96) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684) 
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:471) 
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402) 
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329) 
    at org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:241) 
    at org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:222) 
    at org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44) 
    at org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:690) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:644) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:627) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:321) 
    at org.springframework.web.servlet.view.tiles2.TilesView.renderMergedOutputModel(TilesView.java:124) 
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262) 
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:147) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 

Edit: Juste un peu de précisions. Lorsque j'arrête le serveur et le redémarre, tout est normal et le champ est normalement ajouté. J'ai essayé d'ajouter le champ avec des commandes de roo et en modifiant le code de Java.

Des suggestions?

Vive

+0

Erreur est assez clair: 'Aucun message trouvé sous le code 'label_com_springsource_pizzashop_domain_pizza_newfield' pour locale 'el_GR'' – Xaerxess

Répondre

1

Comme Xaerxess suggéré: Dans votre application.properties (devrait être en project-root/src/main/WEB-INF/i18n/) manque la ligne

label_com_springsource_pizzashop_domain_pizza_newfield=Label for newfield 

Ces étiquettes sont générés pour les champs d'entités générés au moins si vous utilisez le printemps mvc web Roo module (ne peut pas parler pour web json si), bien que dans mon projet actuel seulement pour les paramètres régionaux par défaut (peut être une erreur de configuration au démarrage du projet).

Un peu mystérieux est que votre code ne montre pas la génération d'un champ newfield. Avez-vous introduit manuellement ce champ dans votre entité?

+0

Voir edit! Merci! –

+0

Voulez-vous dire que l'entrée dans 'application.properties' est correctement ajoutée par Spring Roo mais est seulement lue après un redémarrage de Tomcat? Dans mon expérience, les fichiers de propriétés i18n ne sont rechargés que lorsque Tomcat est redémarré. Voici un [thread] (http://forum.springsource.org/showthread.php?113590-Reload-property-file-without-restarting-tomcat) sur le rechargement sans redémarrer. – Pao