RichFaces converter in orderingList wirft exception

Status
Nicht offen für weitere Antworten.

whutmach

Mitglied
Moin, moin,

habe mit untigen Code versucht eine orderingList mit einem Converter zu versorgen.
Klappt ganz gut beim Event "onorderedchanged", aber leider nur einmal.

Beim 2.ten Mal krachts:

java.lang.IllegalStateException: sevenwonder.Wonder
javax.faces.component.StateHolderSaver.restore(StateHolderSaver.java:109)
javax.faces.component.UIComponentBase.restoreAttachedState(UIComponentBase.java:1441)
org.richfaces.component.UIOrderingList$ValueHolder.restoreState(UIOrderingList.java:196)
org.richfaces.component.UIOrderingList.restoreState(UIOrderingList.java:730)
org.richfaces.component.html.HtmlOrderingList.restoreState(HtmlOrderingList.java:1397)
javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1166)
javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1182)
javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1182)
javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1182)
javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1182)
org.ajax4jsf.application.AjaxStateManager.restoreView(AjaxStateManager.java:439)
com.sun.faces.application.ViewHandlerImpl.restoreView(ViewHandlerImpl.java:316)
org.ajax4jsf.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:107)
com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:176)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:104)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

Kann mir da jemand weiter helfen??????????????????????????????????

****************************************************
Hier die faces-config.xml:
****************************************************
<?xml version="1.0" encoding="UTF-8" ?>
- <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
- <managed-bean>
<managed-bean-name>wonderbean</managed-bean-name>
<managed-bean-class>sevenwonder.WonderBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
- <converter>
<converter-id>wonderconverter</converter-id>
<converter-class>sevenwonder.WonderConverter</converter-class>
</converter>
</faces-config>

****************************************************
Hier die index.jsp:
****************************************************
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

<!-- RichFaces tag library declaration -->
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>

<html>
<head>
<title>PRF39</title>
</head>
<body>
<f:view>
<h:form>

<rich:panel>
<f:facet name="header">
<h:eek:utputText value="Using rich:eek:rderingList"/>
</f:facet>

<h:panelGrid columns="3">

<rich:eek:rderingList id="myList" value="#{wonderbean.ancientWonders}" var="wonder" converter="wonderconverter" listWidth="350">
<a4j:support event="onorderchanged" reRender="wonderList"/>
<f:facet name="caption">
<h:eek:utputText value="Wonders in the ancient world"/>
</f:facet>
<h:column>
<f:facet name="header">
<h:eek:utputText value="Name:"/>
</f:facet>
<h:eek:utputText value="#{wonder.name}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:eek:utputText value="Location:"/>
</f:facet>
<h:eek:utputText value="#{wonder.location}"/>
</h:column>
</rich:eek:rderingList>

<rich:dataOrderedList id="wonderList" value="#{wonderbean.ancientWonders}" var="wonder">
<h:eek:utputText value="#{wonder.name}, #{wonder.location}"/>
</rich:dataOrderedList>
</h:panelGrid>

</rich:panel>

</h:form>
</f:view>
</body>
</html>

****************************************************
Hier die Wonder.java:
****************************************************
Java:
package sevenwonder;
 
import javax.annotation.*;

public class Wonder { 
  
   private String name; // setter and getter
   private String location; // setter and getter
 
   public Wonder(String name, String location) 
   {
  	super();
		this.name = name;
		this.location = location;
   } 

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getLocation() {
		return location;
	}

	public void setLocation(String location) {
		this.location = location;
	}
	
	public String toString() {
		return name+":"+location;
	}
	
	@Override 
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((location == null) ? 0 : location.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) 
	{
		if (this == obj) return true;
		if (this == null) return false;
		if (getClass() != obj.getClass()) return false;
		
		final Wonder other = (Wonder) obj;

		if (location == null) 
		{
			if (other.location != null) return false;
		}
		else if (!location.equals(other.location)) return false;
		
		if (name == null) 
		{
			if (other.name != null) return false;
		}
		else if (!name.equals(other.name)) return false;
		
		return true;
	}
	
}

****************************************************
Hier die WonderBean.java:
****************************************************
Java:
package sevenwonder;

import java.util.*;  
import javax.annotation.PostConstruct;

public class WonderBean {
   private List <Wonder> ancientWonders=null;
   private int wonderIndex;
    
   public WonderBean() {
		super();
   }
   
   @PostConstruct
   public void init() {
		ancientWonders = new ArrayList <Wonder>(); 
		ancientWonders.add(new Wonder("Chichen Itza", "Mexico"));
		ancientWonders.add(new Wonder("Christ the Redeemer", "Brazil"));
		ancientWonders.add(new Wonder("Colosseum", "Italy"));
		ancientWonders.add(new Wonder("Great Wall of China", "China"));
		ancientWonders.add(new Wonder("Machu Picchu", "Peru"));
		ancientWonders.add(new Wonder("Taj Mahal", "India"));	
   } 
   
   public String getInit() {
 		return "";
 	}
   
   public int getWonderIndex() { 
		return wonderIndex; 
	}

	public void setWonderIndex(int wonderIndex) {
		this.wonderIndex = wonderIndex;
	}
 
   public List<Wonder> getAncientWonders() {
		return ancientWonders;
	}

	public void setAncientWonders(List<Wonder> ancientWonders) {
		this.ancientWonders = ancientWonders;
		for(int i=0; i<ancientWonders.size(); i++) {
			System.out.println("ancientWonders Name ("+i+")="+ancientWonders.get(i).getName());
		} 
	}
}

****************************************************
Und last nit Least hier die WonderConverter.java:
****************************************************
Java:
package sevenwonder;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
 
public class WonderConverter implements Converter 
{ 
	public Object getAsObject(FacesContext context, UIComponent component, String value) 
	{
		String[] words = value.split(":");
		String name = words[0];
		String location = words[1];
		
		Wonder wonder = new Wonder(name, location);
		
		return (Object)wonder;
	}
	
	public String getAsString(FacesContext context, UIComponent component, Object value)
	{
		return value.toString();
	}
}

Vielen Dank im Voraus!

Grüße, Werner
 

nocturn

Aktives Mitglied
Jaha! Das ist ein besonderes Problem mit Richfaces.

Es betrifft nicht den Converter sondern den Hash-Wert der Liste!

JSF erwartet einen anderen Hash-Wert beim Getter- als beim Setter.
Das soll bewirken das du gezwungen bist die Liste neu zu erstellen.
Gott weiß warum.
 

whutmach

Mitglied
Habe die Liste neu erstellt via:

public List<Wonder> getAncientWonders() {
return new ArrayList<Wonder>(ancientWonders);
}

Aber leider:
============================================================
10:05:23,501 ERROR [lifecycle] JSF1054: (Phase ID: RESTORE_VIEW 1, View ID: ) Exception thrown during phase execution: javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.L

10:05:23,504 ERROR [BaseXMLFilter] Exception in the filter chain
javax.servlet.ServletException: sevenwonder.Wonder
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
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:235)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:189)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:91)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:92)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
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:325)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalStateException: sevenwonder.Wonder
at javax.faces.component.StateHolderSaver.restore(StateHolderSaver.java:109)
at javax.faces.component.UIComponentBase.restoreAttachedState(UIComponentBase.java:1441)
at org.richfaces.component.UIOrderingList$ValueHolder.restoreState(UIOrderingList.java:196)
at org.richfaces.component.UIOrderingList.restoreState(UIOrderingList.java:730)
at org.richfaces.component.html.HtmlOrderingList.restoreState(HtmlOrderingList.java:1397)
at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1166)
at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1182)
at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1182)
at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1182)
at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1182)
at org.ajax4jsf.application.AjaxStateManager.restoreView(AjaxStateManager.java:439)
at com.sun.faces.application.ViewHandlerImpl.restoreView(ViewHandlerImpl.java:316)
at org.ajax4jsf.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:107)
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:176)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:104)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
... 25 more
10:05:23,544 ERROR [[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception
java.lang.IllegalStateException: sevenwonder.Wonder
at javax.faces.component.StateHolderSaver.restore(StateHolderSaver.java:109)
at javax.faces.component.UIComponentBase.restoreAttachedState(UIComponentBase.java:1441)
at org.richfaces.component.UIOrderingList$ValueHolder.restoreState(UIOrderingList.java:196)
at org.richfaces.component.UIOrderingList.restoreState(UIOrderingList.java:730)
at org.richfaces.component.html.HtmlOrderingList.restoreState(HtmlOrderingList.java:1397)
at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1166)
at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1182)
at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1182)
at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1182)
at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1182)
at org.ajax4jsf.application.AjaxStateManager.restoreView(AjaxStateManager.java:439)
at com.sun.faces.application.ViewHandlerImpl.restoreView(ViewHandlerImpl.java:316)
at org.ajax4jsf.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:107)
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:176)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:104)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
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:235)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:189)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:91)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:92)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
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:325)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
============================================================

Hat irgendjemand 'ne Idee dazu?

LG, Werner
 

whutmach

Mitglied
Rome wasn't built in one day:
The class that will be displayed in the list must implement the <code>java.io.Serializable</code> interface.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Zugang zur List elementen (richfaces) Web Tier 1
G GWT oder RichFaces oder ... Web Tier 5
J JSF Grad der Barrierefreiheit von PrimeFaces, ICEFaces, RichFaces und OpenFaces Web Tier 2
K RichFaces CommandButton mit PopUp verwenden Web Tier 2
M RichFaces zerstörte mein Projekt Web Tier 4
D JSF RichFaces Tree-Beispiel Problem Web Tier 2
F RichFaces Override CSS Web Tier 4
T RichFaces will nicht funktionieren :( Web Tier 2
T RichFaces einbinden Web Tier 4
N JSF [Maven] Seam 2.2, Richfaces 3.3 - a4j wird nicht umgewandelt Web Tier 6
T JSF Simple Anwendung mit Richfaces Web Tier 7
S Richfaces 4.0 Ajax Waitingpanel Web Tier 2
J JSF Richfaces Tabs, dynamisches include funktioniert nicht Web Tier 4
S Richfaces: Column ReRender Web Tier 4
G JSF Richfaces rich:messages Web Tier 13
M JSF Richfaces 2 Kalender kombinieren Web Tier 4
K RichFaces Geschwindigkeit bei Tabellen Web Tier 3
T JSF/Richfaces rich:dataTable with rich:datascroller Web Tier 1
H Richfaces - Taglib Problem gelb unterstrichen Ajax Output Web Tier 6
E JSF 2.0 Wie Richfaces in Eclipse einbinden? Web Tier 25
M Frage zur Konfiguration einer RichFaces DataTable Web Tier 4
I JSF 2.0 und RICHFACES/ ICEFACES oder ähnliches? Web Tier 6
B Probleme mit RichFaces Web Tier 2
B Richfaces 3.3.2.SR1 --- Kompatibilität Web Tier 3
N Richfaces + AjaxValidator Web Tier 3
T richfaces + jsf Web Tier 3
L [RichFaces] Applikation wird mit NullPointerException beendet Web Tier 5
V Image Map und Ajax-Richfaces Web Tier 5
J Richfaces combobox zeigt Items nicht an Web Tier 4
P Richfaces/Seam: RichShuttleListe funktioniert nicht Web Tier 8
N oncomplete bei Richfaces Web Tier 3
D Richfaces (Seam/Hibernate): dynamische Eingabefelder Web Tier 2
D Eventing in Kombination mit RichFaces bzw. Element.show() Web Tier 2
F Richfaces livedemo Web Tier 1
F RichFaces, Problem mit PickList Web Tier 2
T richfaces datatable Web Tier 3
C RichFaces Ajax ReRender funktioniert nicht. Web Tier 2
S richfaces Datatable horizontal ausgeben Web Tier 2
F RichFaces: JSF-Lifecycle / Validierung Web Tier 2
E RichFaces 3.2.1 Probleme Web Tier 4
F nach Update auf RichFaces 3.2.0 Fehlermeldungen Web Tier 5
G JSF JSF 2.3 Converter injection/persistence context -> null Web Tier 2
K Converter + Zugriff auf DAO und EntityManager Web Tier 7
M Converter für SelectOneMenu Web Tier 3
P JSF Converter Web Tier 3
H JSF Converter selectoneitem Web Tier 9
H JSF Problem mit Converter Web Tier 2
M JSF Converter für String to List<String> Web Tier 2
D JSF Converter erstellen Web Tier 2
H JSF SelectOneMenu und der Converter Web Tier 3
T JSF Eigener Converter wird nur für Eingabekomponenten aufgerufen? Web Tier 3
A ice:inputText Converter Problem Web Tier 2
M JSF 2 Global Converter Web Tier 4
Y JSF: Entites in SelectItems und Converter Web Tier 6
S JSF Enum Converter Web Tier 1

Ähnliche Java Themen

Neue Themen


Oben