[jboss-user] [JBoss Seam] - Help, <s:convertEntity /> problem

nicoliniyo do-not-reply at jboss.com
Thu Dec 20 10:22:21 EST 2007


I was writting the code for and app to add a record to the database:
(I've translated the code from spanish, asume the code has no typo)

this is a form to add a currency, the currency has a country mapped to it.
The xhtml form uses a tempate with <s:vallidateAll>
Here the monedaNueva.xhtml:


  | <?xml version="1.0" encoding="UTF-8"?>
  | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  | <html xmlns="http://www.w3.org/1999/xhtml"
  |       xmlns:f="http://java.sun.com/jsf/core"
  |       xmlns:h="http://java.sun.com/jsf/html"
  |       xmlns:ui="http://java.sun.com/jsf/facelets"
  |       xmlns:s="http://jboss.com/products/seam/taglib"
  |       xmlns:a4j="http://richfaces.org/a4j"
  |       xmlns:rich="http://richfaces.org/rich">
  |     <f:loadBundle basename="messages" var="m"/>
  |     <ui:composition template="/WEB-INF/template.xhtml">
  |         <ui:define name="title" value="#{m['TIT_PRIN_CREA_currency']}"></ui:define>
  |         <body>
  |              
  |             <ui:define name="body">
  |                 <fieldset><h1><legend jsfc="h:outputText" value="#{m['E_CONTEN_DATOS_currency']}"></legend></h1>
  |                    <s:decorate template="editar.xhtml">
  |                         <ui:define name="label">
  |                             <label jsfc="h:outputLabel" for="code" value="#{m['E_code']}"></label>
  |                         </ui:define>
  |                         <input jsfc="h:inputText" type="text" id="code" size="10" value="#{currency.code}"/>
  |                    </s:decorate>
  |                     <br/><br/>
  |                     <s:decorate template="editar.xhtml">
  |                         <ui:define name="label">
  |                             <label jsfc="h:outputLabel" for="name" value="#{m['E_name']}"></label>
  |                          </ui:define>
  |                         <input jsfc="h:inputText" value="#{currency.name}" type="text" id="name" size="50" checked="checked" layout = "lineDirection"/>
  |                     </s:decorate>
  |                     <br/><br/>
  |                     <s:decorate template="editar.xhtml">
  |                         <ui:define name="label">
  |                             <label jsfc="h:outputLabel" for="codeISO" value="#{m['E_COD_ISO']}"></label>
  |                         </ui:define>
  |                         <input jsfc="h:inputText" value="#{currency.codeIso}" type="text" id="codeISO" size="10" />
  |                     </s:decorate>
  |                     <br/><br/>
  |                     <s:decorate template="editar.xhtml">
  |                         <ui:define name="label">
  |                             <label jsfc="h:outputLabel" for="abreviacion" value="#{m['E_ABREV']}"></label>
  |                         </ui:define>
  |                         <input jsfc="h:inputText" value="#{currency.abreviacion}" type="text" id="abreviacion" size="10" />
  |                     </s:decorate>
  |                     <br/><br/>
  |                     <s:decorate template="editar.xhtml">
  |                         <ui:define name="label">
  |                             <label jsfc="h:outputLabel" for="country" value="#{m['E_country']}"></label>
  |                         </ui:define>
  |                         
  |                             <h:selectOneMenu id="country" value="#{currency.country}">
  |                                 <s:selectItems value="#{countryLista}" var="aCountry" label="#{aCountry.name}" />
  | 
  |                             </h:selectOneMenu>
  |                             <s:convertEntity />
  |                     </s:decorate>
  |                 </fieldset>
  |             </ui:define>
  |             <ui:define name="BarraEspecifica">     
  |                 <h:commandButton value="#{m['BOTON_GRABAR']}" action="#{currencyAdministrador.save}"/>
  |                 <input type="submit" jsfc="h:commandButton" value="#{m['BOTON_GRABAR']}" action="#{currencyAdministrador.save}" view="/currencyList.xhtml" propagation="begin"/>
  |                 <input type="submit" jsfc="h:commandButton" value="#{m['BOTON_CANCELAR']}" action="#{currencyAdministrador.cancel}" view="/currencyList.xhtml" propagation="end"/>
  |             </ui:define>
  |             
  |         </body>
  |     </ui:composition>
  | </html>
  | 



  | ...
  | <s:decorate template="edit.xhtml">
  |         <ui:define name="label">
  |                  <label jsfc="h:outputLabel" for="country" value="#{m['E_COUNTRY']}"></label>
  |          </ui:define>
  |                         
  |           <h:selectOneMenu id="country" value="#{currency.country}">
  |                   <s:selectItems value="#{countryList}" var="aCountry" label="#{aContry.name}" />
  | 
  |            </h:selectOneMenu>
  |                      
  | </s:decorate>
  | ...

And an error came out:

  | Conversion Error setting value ....Country at qw12... 'null Converter'.
  | 

So I've added the <s:convertEntity /> under the <s:selectItems  line:


  | ...
  | <s:decorate template="edit.xhtml">
  |         <ui:define name="label">
  |                  <label jsfc="h:outputLabel" for="country" value="#{m['E_COUNTRY']}"></label>
  |          </ui:define>
  |                         
  |           <h:selectOneMenu id="country" value="#{currency.country}">
  |                   <s:selectItems value="#{countryList}" var="aCountry" label="#{aContry.name}" />
  |                    <s:convertEntity />
  |            </h:selectOneMenu>
  |                      
  | </s:decorate>
  | ...

After I've added the <s:convertEntity /> I try enter the xhtml page and the following error comes out:


  | com.sun.facelets.tag.TagException: /monedaNueva.xhtml @55,48 <s:convertEntity> Parent not an instance of ValueHolder: org.jboss.seam.ui.component.html.HtmlValidateAll at 7d734b
  | 	at com.sun.facelets.tag.jsf.ConvertHandler.apply(ConvertHandler.java:93)
  | 	at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
  | 	at com.sun.facelets.tag.ui.DecorateHandler.apply(DecorateHandler.java:122)
  | 	at com.sun.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:310)
  | 	at com.sun.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:280)
  | 	at com.sun.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:68)
  | 	at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
  | 	at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
  | 	at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
  | 	at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:119)
  | 	at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
  | 	at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
  | 	at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
  | 	at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
  | 	at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
  | 	at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:144)
  | 	at com.sun.facelets.tag.ui.DecorateHandler.apply(DecorateHandler.java:105)
  | 	at org.jboss.seam.ui.handler.DecorateHandler.applyNextHandler(DecorateHandler.java:32)
  | 	at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
  | 	at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
  | 	at com.sun.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:64)
  | 	at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:131)
  | 	at com.sun.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:310)
  | 	at com.sun.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:280)
  | 	at com.sun.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:68)
  | 	at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
  | 	at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
  | 	at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
  | 	at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
  | 	at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
  | 	at com.sun.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:109)
  | 	at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
  | 	at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
  | 	at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
  | 	at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
  | 	at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
  | 	at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
  | 	at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
  | 	at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:144)
  | 	at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:113)
  | 	at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
  | 	at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
  | 	at com.sun.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:95)
  | 	at com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:524)
  | 	at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:567)
  | 	at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
  | 	at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216)
  | 	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
  | 	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
  | 	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
  | 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
  | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  | 	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:307)
  | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  | 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
  | 	at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
  | 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  | 	at org.jboss.seam.web.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:42)
  | 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  | 	at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
  | 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  | 	at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
  | 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  | 	at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
  | 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  | 	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
  | 	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
  | 	at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
  | 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  | 	at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
  | 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
  | 	at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
  | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  | 	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
  | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  | 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
  | 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
  | 	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
  | 	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
  | 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
  | 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
  | 	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
  | 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  | 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
  | 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
  | 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580)
  | 	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
  | 	at java.lang.Thread.run(Thread.java:595)
  | 

can't solve it so far.
Any ideas? (in advance, thanks for your time)



View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4114677#4114677

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4114677



More information about the jboss-user mailing list