[jboss-user] [JBoss Seam] - <s:selectItems> problem

jquery@interia.pl do-not-reply at jboss.com
Tue Apr 24 17:48:36 EDT 2007


Hi,

I've got problem with <s:selectItems> control. I try to populate it with the list from my Dictionary class:

  | @Name("dictionary")
  | public class Dictionary implements Serializable{
  | 	
  | 	List<SelectItem> sexList;
  | 		
  | 	public Dictionary(){
  | 		
  | 		sexList = new ArrayList<SelectItem>();
  | 		
  | 		sexList.add(new SelectItem('F', ResourceBundle.instance().getString("sexFemale")));
  | 		sexList.add(new SelectItem('M', ResourceBundle.instance().getString("sexMale")));
  | 		 
  | 		
  | 		
  | 		
  | 		employedList = new ArrayList<SelectItem>();
  | 		employedList.add(new SelectItem("0", ResourceBundle.instance().getString("labelYes")) );
  | 		employedList.add(new SelectItem("1", ResourceBundle.instance().getString("labelNo")) );
  | 		
  | 		
  | 		
  | 	}
  | 	
  | 	
  | 	public Dictionary createInstance(){
  | 		Dictionary dictionary = new Dictionary();
  | 		return dictionary;
  | 	}
  | 
  | 	
  | 
  | 	public List<SelectItem> getSexList() {
  | 		return sexList;
  | 	}
  | 
  | 	public void setSexList(List<SelectItem> sexList) {
  | 		this.sexList = sexList;
  | 	}
  | 	
  | 	
  | 
  | }
  | 
  | 

my facelet contains the following code:


  | ...
  | <h:selectOneMenu value="#{profileHome.instance.sexFlag}">
  |         <s:selectItems value="#{dictionary.sexList}" var="sex" label="#{sex.label}" /> 
  | </h:selectOneMenu>	
  | ...
  | 
When the page is rendered I get the error:

  | 23:22:14,687 ERROR [STDERR] 2007-04-24 23:22:14 com.sun.facelets.FaceletViewHandler handleRenderException
  | SEVERE: Error Rendering View[/specialist/spec_profile_edit.xhtml]
  | javax.faces.convert.ConverterException: java.lang.ClassCastException: javax.faces.model.SelectItem
  | 	at javax.faces.convert.CharacterConverter.getAsString(CharacterConverter.java:74)
  | 	at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getConvertedStringValue(RendererUtils.java:544)
  | 	at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getConvertedStringValue(RendererUtils.java:555)
  | 	at org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils.renderSelectOptions(HtmlRendererUtils.java:398)
  | 	at org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils.internalRenderSelect(HtmlRendererUtils.java:298)
  | 	at org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils.renderMenu(HtmlRendererUtils.java:252)
  | 	at org.apache.myfaces.shared_impl.renderkit.html.HtmlMenuRendererBase.encodeEnd(HtmlMenuRendererBase.java:54)
  | 	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:536)
  | 	at org.apache.myfaces.shared_impl.renderkit.RendererUtils.renderChild(RendererUtils.java:442)
  | 	at org.apache.myfaces.shared_impl.renderkit.html.HtmlGridRendererBase.renderChildren(HtmlGridRendererBase.java:216)
  | 	at org.apache.myfaces.shared_impl.renderkit.html.HtmlGridRendererBase.encodeEnd(HtmlGridRendererBase.java:98)
  | 	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:536)
  | 	at com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:252)
  | 	at com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:249)
  | 	at com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:249)
  | 	at com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:249)
  | 	at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:573)
  | 	at org.ajax4jsf.framework.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:101)
  | 	at org.ajax4jsf.framework.ajax.AjaxViewHandler.renderView(AjaxViewHandler.java:221)
  | 	at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:384)
  | 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138)
  | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
  | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  | 	at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63)
  | 	at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:60)
  | 	at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  | 	at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
  | 	at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  | 	at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57)
  | 	at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  | 	at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:79)
  | 	at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  | 	at org.jboss.seam.web.SeamFilter.doFilter(SeamFilter.java:84)
  | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  | 	at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:75)
  | 	at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:213)
  | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  | 	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
  | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  | 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
  | 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
  | 	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
  | 	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
  | 	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
  | 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
  | 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
  | 	at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
  | 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
  | 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
  | 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
  | 	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
  | 	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
  | 	at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
  | 	at java.lang.Thread.run(Thread.java:595)
  | Caused by: java.lang.ClassCastException: javax.faces.model.SelectItem
  | 	at javax.faces.convert.CharacterConverter.getAsString(CharacterConverter.java:70)
  | 
When I add a standard converter:


  | ...
  | <h:selectOneMenu value="#{profileHome.instance.sexFlag}" converter="Character">
  |   <s:selectItems value="#{dictionary.sexList}" var="sex" label="#{sex.label}" /> 
  | </h:selectOneMenu>	
  | ...
  | 
I get the error:

  | 23:23:45,765 ERROR [ApplicationImpl] Could not instantiate converter null
  | java.lang.NullPointerException
  | 	at org.apache.myfaces.application.ApplicationImpl.createConverter(ApplicationImpl.java:462)
  | 	at org.jboss.seam.jsf.SeamApplication11.createConverter(SeamApplication11.java:92)
  | 	at com.sun.facelets.tag.jsf.ValueHolderRule$LiteralConverterMetadata.applyMetadata(ValueHolderRule.java:45)
  | 	at com.sun.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:36)
  | 	at com.sun.facelets.tag.MetaTagHandler.setAttributes(MetaTagHandler.java:62)
  | 	at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:144)
  | 	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.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.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
  | 	at com.sun.facelets.tag.ui.DefineHandler.apply(DefineHandler.java:58)
  | 	at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:128)
  | 	at com.sun.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:306)
  | 	at com.sun.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:279)
  | 	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.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:143)
  | 	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:503)
  | 	at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:546)
  | 	at org.ajax4jsf.framework.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:101)
  | 	at org.ajax4jsf.framework.ajax.AjaxViewHandler.renderView(AjaxViewHandler.java:221)
  | 	at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:384)
  | 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138)
  | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
  | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  | 	at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63)
  | 	at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:60)
  | 	at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  | 	at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
  | 	at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  | 	at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57)
  | 	at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  | 	at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:79)
  | 	at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  | 	at org.jboss.seam.web.SeamFilter.doFilter(SeamFilter.java:84)
  | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  | 	at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:75)
  | 	at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:213)
  | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  | 	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
  | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  | 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
  | 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
  | 	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
  | 	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
  | 	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
  | 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
  | 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
  | 	at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
  | 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
  | 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
  | 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
  | 	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
  | 	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
  | 	at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
  | 	at java.lang.Thread.run(Thread.java:595)
  | 

And when I use <f:selectItems>:

  | ...
  | <h:selectOneMenu value="#{profileHome.instance.sexFlag}" >
  |    <f:selectItems value="#{dictionary.sexList}"/>
  | </h:selectOneMenu>	
  | ...
  | 
the page is rendered correctly. 
I don't know what I am doing wrong that <s:selectItems> doesn't work. 

Thanks in advance for any help.


Best regards,
jquery


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

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



More information about the jboss-user mailing list