[jboss-user] [JBoss Seam] - selectItems / Converter Issue

djeverson do-not-reply at jboss.com
Mon Feb 26 21:09:30 EST 2007


We are in the process of implementing a converter for a drop-down list in our application. 

We are using Seam 1.1.7 RC1, JBoss 4.0.5, facelets, and ajax4jsf. 

The page with the drop down is being executed as part of a page flow. 

The page is properly displaying the drop down list values (the first name of resources to assign the work task to). 
Whenever the user selects a value from the drop down list and clicks on the next button, the following stack trace is generated:


  | 2007-02-26 19:55:16,689 ERROR [org.jboss.seam.web.ExceptionFilter] uncaught exception
  | javax.servlet.ServletException: Could not restore StateHolder of type us.crimnet.iss.view.converters.Converters$1 (missing no-args constructor?)
  | 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:152)
  | 	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.ExceptionFilter.doFilter(ExceptionFilter.java:57)
  | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  | 	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.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.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
  | 	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:67)
  | 	at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:223)
  | 	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.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)
  | 2007-02-26 19:55:16,689 ERROR [org.jboss.seam.web.ExceptionFilter] exception root cause
  | java.lang.RuntimeException: Could not restore StateHolder of type us.crimnet.iss.view.converters.Converters$1 (missing no-args constructor?)
  | 	at javax.faces.component.UIComponentBase.restoreAttachedState(UIComponentBase.java:894)
  | 	at org.jboss.seam.ui.PrioritizableConverter.restoreState(PrioritizableConverter.java:85)
  | 	at javax.faces.component.UIComponentBase.restoreAttachedState(UIComponentBase.java:903)
  | 	at javax.faces.component.UIComponentBase.restoreAttachedState(UIComponentBase.java:880)
  | 	at org.jboss.seam.ui.ConverterChain.restoreState(ConverterChain.java:187)
  | 	at javax.faces.component.UIComponentBase.restoreAttachedState(UIComponentBase.java:903)
  | 	at javax.faces.component.UIOutput.restoreState(UIOutput.java:94)
  | 	at javax.faces.component.UIInput.restoreState(UIInput.java:489)
  | 	at javax.faces.component.html.HtmlSelectOneMenu.restoreState(HtmlSelectOneMenu.java:408)
  | 	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:728)
  | 	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:719)
  | 	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:719)
  | 	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:719)
  | 	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:719)
  | 	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:719)
  | 	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:719)
  | 	at org.apache.myfaces.application.jsp.JspStateManagerImpl.restoreComponentState(JspStateManagerImpl.java:221)
  | 	at org.apache.myfaces.application.jsp.JspStateManagerImpl.restoreView(JspStateManagerImpl.java:287)
  | 	at org.ajax4jsf.framework.ajax.AjaxStateManager.restoreView(AjaxStateManager.java:76)
  | 	at org.jboss.seam.jsf.SeamStateManager.restoreView(SeamStateManager.java:97)
  | 	at org.ajax4jsf.framework.ajax.AjaxStateManager.restoreView(AjaxStateManager.java:76)
  | 	at org.apache.myfaces.application.jsp.JspViewHandlerImpl.restoreView(JspViewHandlerImpl.java:255)
  | 	at com.sun.facelets.FaceletViewHandler.restoreView(FaceletViewHandler.java:353)
  | 	at org.ajax4jsf.framework.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:109)
  | 	at org.ajax4jsf.framework.ajax.AjaxViewHandler.restoreView(AjaxViewHandler.java:135)
  | 	at org.jboss.seam.jsf.SeamViewHandler.restoreView(SeamViewHandler.java:127)
  | 	at com.sun.facelets.FaceletViewHandler.restoreView(FaceletViewHandler.java:353)
  | 	at org.ajax4jsf.framework.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:109)
  | 	at org.ajax4jsf.framework.ajax.AjaxViewHandler.restoreView(AjaxViewHandler.java:135)
  | 	at org.apache.myfaces.lifecycle.LifecycleImpl.restoreView(LifecycleImpl.java:141)
  | 	at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:66)
  | 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
  | Caused by: java.lang.InstantiationException: us.crimnet.iss.view.converters.Converters$1
  | 	at java.lang.Class.newInstance0(Class.java:335)
  | 	at java.lang.Class.newInstance(Class.java:303)
  | 	at javax.faces.component.UIComponentBase.restoreAttachedState(UIComponentBase.java:890)
  | 	at org.jboss.seam.ui.PrioritizableConverter.restoreState(PrioritizableConverter.java:85)
  | 	at javax.faces.component.UIComponentBase.restoreAttachedState(UIComponentBase.java:903)
  | 	at javax.faces.component.UIComponentBase.restoreAttachedState(UIComponentBase.java:880)
  | 	at org.jboss.seam.ui.ConverterChain.restoreState(ConverterChain.java:187)
  | 	at javax.faces.component.UIComponentBase.restoreAttachedState(UIComponentBase.java:903)
  | 	at javax.faces.component.UIOutput.restoreState(UIOutput.java:94)
  | 	at javax.faces.component.UIInput.restoreState(UIInput.java:489)
  | 	at javax.faces.component.html.HtmlSelectOneMenu.restoreState(HtmlSelectOneMenu.java:408)
  | 	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:728)
  | 	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:719)
  | 	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:719)
  | 	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:719)
  | 	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:719)
  | 	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:719)
  | 	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:719)
  | 	at org.apache.myfaces.application.jsp.JspStateManagerImpl.restoreComponentState(JspStateManagerImpl.java:221)
  | 	at org.apache.myfaces.application.jsp.JspStateManagerImpl.restoreView(JspStateManagerImpl.java:287)
  | 	at org.ajax4jsf.framework.ajax.AjaxStateManager.restoreView(AjaxStateManager.java:76)
  | 	at org.jboss.seam.jsf.SeamStateManager.restoreView(SeamStateManager.java:97)
  | 	at org.ajax4jsf.framework.ajax.AjaxStateManager.restoreView(AjaxStateManager.java:76)
  | 	at org.apache.myfaces.application.jsp.JspViewHandlerImpl.restoreView(JspViewHandlerImpl.java:255)
  | 	at com.sun.facelets.FaceletViewHandler.restoreView(FaceletViewHandler.java:353)
  | 	at org.ajax4jsf.framework.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:109)
  | 	at org.ajax4jsf.framework.ajax.AjaxViewHandler.restoreView(AjaxViewHandler.java:135)
  | 	at org.jboss.seam.jsf.SeamViewHandler.restoreView(SeamViewHandler.java:127)
  | 	at com.sun.facelets.FaceletViewHandler.restoreView(FaceletViewHandler.java:353)
  | 	at org.ajax4jsf.framework.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:109)
  | 	at org.ajax4jsf.framework.ajax.AjaxViewHandler.restoreView(AjaxViewHandler.java:135)
  | 	at org.apache.myfaces.lifecycle.LifecycleImpl.restoreView(LifecycleImpl.java:141)
  | 2007-02-26 19:55:16,799 INFO  [org.jboss.seam.core.Exceptions] reading exception mappings from /WEB-INF/pages.xml
  | 2007-02-26 19:55:16,819 ERROR [org.jboss.seam.exceptions.DebugPageHandler] redirecting to debug page
  | ...
  | 

Our converter code looks like:

  | package us.crimnet.iss.view.converters;
  | 
  | import javax.faces.component.UIComponent;
  | import javax.faces.context.FacesContext;
  | import javax.faces.convert.Converter;
  | import javax.faces.convert.ConverterException;
  | 
  | import org.jboss.seam.Component;
  | import org.jboss.seam.annotations.Name;
  | import org.jboss.seam.annotations.Transactional;
  | 
  | import us.crimnet.iss.services.ProfileManagement;
  | import us.crimnet.iss.services.impl.ProfileManagementImpl;
  | import us.crimnet.iss.om.core.Person;
  | 
  | @Name("converters")
  | public class Converters {
  |       
  | 	@Transactional
  |    public Converter getPersonConverter() {
  |       return new Converter() {
  | 
  |     	  @Transactional
  |          public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) throws ConverterException {
  |         	 System.out.println("getAsObject [" + arg2 + "]");
  |         	 if (arg2 == null) {
  |                return null;
  |             }
  |             try {
  |             	   ProfileManagement profileManagement = 
  |                   	 (ProfileManagement)
  |                   	 	Component.getInstance(ProfileManagementImpl.class);
  |             	   return profileManagement.getPersonByPK(Long.valueOf(arg2));
  |             } catch (NumberFormatException e) {
  |               throw new ConverterException("Cannot find selected Person", e);
  |             }
  |          }
  | 
  |          @Transactional
  |          public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) throws ConverterException {
  |         	 System.out.println("getAsString [" + arg2 + "]");
  |            if (arg2 instanceof Person) {
  |                Person person = (Person) arg2;
  |                return person.getId().toString();
  |            } else {
  |               return null;
  |            }
  |          }         
  |       };
  |    }   
  | }
  | 

snippet of the facelets xhtml:

  |             <h:column>
  |                 <f:facet name="header">
  |                     <h:outputText value="Owner" />
  |                 </f:facet>
  |                 <h:selectOneMenu value="#{request.owner}" 
  |                 								converter="#{converters.personConverter}" 
  |                 								required="false">
  |                 	<s:selectItems value="#{wizard.resources}" var="person" label="#{person.firstName}"
  |                 		noSelectionLabel="Please Select..." hideNoSelectionLabel="true" /> 
  | 				        </h:selectOneMenu>
  |             </h:column>                                    
  | 

We are using the ui example as a pattern.  In fact, the ui example is successfully run in our environment. 

Any suggestions as to what is causing the issue/stack trace?

Thanks!

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

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



More information about the jboss-user mailing list