JSF Problem mit Converter

hyperion

Bekanntes Mitglied
Hallo,

nach einer etwas längern Pause wollte ich mich nochmal mit dem Thema JEE beschäftigen. Ich habe mir Eclipse, Glassfish und Postgres besorgt.
Was ich bisher gemacht hab ist eine Tabelle EinnahmeArt anzulegen und mit ein paar Werten zu füllen. Dann habe ich eine Klasse EinnahmeArt angelegt. Sowie eine Klasse(ManagedBean) EinnahmeAnlegenController und ein Servlet EinnahmeAnlegen.xhtml. Auf EinnahmeAnlegen.xhtml kann der Benutzer Betrag Datum und EinnahmeArt angeben. EinnahmeArt soll eine Combobox sein. Die Werte für die ComboBox hole ich natürlich aus der Datenbank.

=>Ziel ist es also eine Seite anzuzeigen, wo der Benutzer aus einer Combobox einen Wert auswählen kann, wobei die Liste aus einer Datenbank kommt.

Die Fehlermeldung die ich bekomme ist:
Code:
exception

javax.servlet.ServletException: java.lang.String cannot be cast to EinnahmeArt

root cause

java.lang.ClassCastException: java.lang.String cannot be cast to EinnahmeArt

und im Glassfish log steht:
Code:
Error Rendering View[/EinnahmeAnlegen.xhtml] java.lang.ClassCastException: java.lang.String cannot be cast to EinnahmeArt at ConverterEinnahmeArt.getAsString(ConverterEinnahmeArt.java:13) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getFormattedValue(HtmlBasicRenderer.java:519) at com.sun.faces.renderkit.html_basic.MenuRenderer.renderOption(MenuRenderer.java:534) at com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:792) at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:844) at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:298) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) at 
...

Ich würde vermuten, dass es irgendwie an dem Converter liegt. Die Meldung aus dem Glassfish log java.lang.ClassCastException: java.lang.String cannot be cast to EinnahmeArt at converterEinnahmeArt.getAsString(ConverterEinnahmeArt.java:13) verwundert mich. Die Meldugn besagt ja, dass der String nicht zu EinnahmeArt gecastet werden kann. Das will ich aber ja auch gar nicht. Eigentlich möchte ich ja für die Combobox das Objekt in einen String casten.

Hier für euch der wichtige Code vom View Richtung Datenbank. Ich würde mich freuen, wenn sich einer die Zeit nimmt sich das anzuschauen. Ich weiß es ist etwas viel.

EinnahmeAnlegen.xhtml
Code:
<h:outputText value="Art:" />
     <h:selectOneMenu>                   
     <f:selectItems value="#{einnahmeAnlegenController.einnahmeArten}"/>
     <f:converter   converterId="converterEinnahmeArt"/>
</h:selectOneMenu>


EinnahmeAnlegenController (ManagedBean)
Code:
public List<SelectItem> getEinnahmeArten(){	
		try {
			return EinnahmeArt.getEinnahmeArten();
		} catch (SQLException e) {
			List<SelectItem> a = new ArrayList<SelectItem>();
			a.add(new SelectItem("test SQL"));			
			return a;
		} catch(ClassNotFoundException e){			
			List<SelectItem> a = new ArrayList<SelectItem>();
			a.add(new SelectItem("test Class"));			
			return a;
		}
	}

EinnahmeArt
Code:
public static List<SelectItem> getEinnahmeArten() throws ClassNotFoundException, SQLException{
		Statement st = null;
		ResultSet rs = null;
		
		List<SelectItem> einnahmeArten = new ArrayList<SelectItem>();
			st = DBUtil.getStatement();
			rs = st.executeQuery("SELECT \"EinnahmeArtID\", \"Text\" FROM \"EinnahmeArt\";");
			
			while (rs.next()) {
				EinnahmeArt einnahmeArt = new EinnahmeArt();
				einnahmeArt.setEinnahmeArtID(rs.getInt("EinnahmeArtID"));
				einnahmeArt.setText(rs.getString("Text"));
	            einnahmeArten.add(new SelectItem(einnahmeArt));
	        }		
			rs.close();
			DBUtil.closeStatement(st);
			return einnahmeArten;		
	}

faces-config.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>

<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    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_2_1.xsd"
    version="2.1">
    
    <converter>
		<converter-id>converterEinnahmeArt</converter-id>
		<converter-class>ConverterEinnahmeArt</converter-class>
	</converter>

</faces-config>

ConverterEinnahmeArt
Frage: sehe ich das richtig. Bei der Anzeige der Combobox sollte eigentlich getAsString aufgerufen werden und nach der Auswahl getAsObject?
Code:
public class ConverterEinnahmeArt implements Converter {
 
    public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
        return EinnahmeArt.getByID(Integer.parseInt(arg2));
    }
 
    public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {        
        return ((EinnahmeArt)arg2).toString();
    }
}

Gruß hyperion
 
S

Sym

Gast
Im Converter ist Dein arg2 kein EinnahmeArt sondern ein SelectItem.

Als Tip für die Zukunft: In Deiner Fehlermeldung steht genau die Klasse und Zeile, in der der Fehler auftritt. Dann entweder Denken oder Debuggen. :)

versuch mal
Java:
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {        
    return ((EinnahmeArt)((SelectItem)arg2).getValue()).toString();
}

oder besser direkt:
Java:
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {        
    return arg2.toString();
}
wenn die toString() korrekt überschrieben wurde.
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
A ice:inputText Converter Problem Web Tier 2
S AJAX/RestController Post Problem Web Tier 18
pkm Problem beim Import eines dynamischen Webprojekts als .zip Web Tier 2
O JSF Java Unsigned Applet PrivilegedActionException Problem Web Tier 2
F JSF preRenderView Problem Web Tier 0
J Funktion für AJAX - Problem mit Return Web Tier 14
S Problem mit Checkboxen im Servlet erkennen Web Tier 3
N JSF JSF Selected Item & GesBetrag Problem Web Tier 1
Shams Problem mit der verwirklichung einer Readmethode in einer Chatapplikation Web Tier 3
F JSF Problem mit Primefaces Web Tier 7
F JSF Problem mit Primefaces Web Tier 4
F JSP Problem mit Property Web Tier 0
D Java EE Servlet login Problem Web Tier 1
L java.io.NotSerializableException für domain Objekte - Design Problem? Web Tier 12
T JSF Character Encoding Problem Web Tier 2
T JSF Problem mit JSF und Foreign Key Tabellen Web Tier 8
M Zeichensatz Problem? Web Tier 3
T JSF Problem wenn Session abgelaufen ist Web Tier 6
K JSF websphere application server 8 tomahawk problem Unable to find resource Web Tier 3
D JSF RichFaces Tree-Beispiel Problem Web Tier 2
J JSF Problem mit Bearbeiten von Datensätzen Web Tier 7
M JSF Problem mit CSS und Unterverzeichnissen Web Tier 2
M JSP Problem beim deployen auf Tomcat Web Tier 2
P Servlet getWidth(); - getHight(); Problem Web Tier 3
J JSP Problem bei Hibernate mit JSP Web Tier 2
M JSF mit Tobago Problem: ServletContextListener Web Tier 5
J Facelets javascript compiler problem Web Tier 3
T Tomcat mit Servlets Problem Web Tier 7
T Servlet Problem bei gwt rpc Web Tier 7
S Servlet Problem mit Tomcat Web Tier 3
J JSF Kein Methodenaufruf mit Button möglich durch PhaseListener (redirect) Problem? Web Tier 2
P rich:panelMenuGroup --> expanded Parameter Problem Web Tier 3
F.S.WhiTeY Tmplating/CSS Problem bei JSF Web Tier 7
B JSF Tomcat Windows Linux equals Problem Web Tier 3
R JSF JSF Composite Components: Problem mit Attributliste und Referenzierung Web Tier 2
M Problem mit Hibernate und GWT Web Tier 6
O JSP struts2 tag: Problem mit Dezimalzahlen Web Tier 2
P Struts Struts2 if tag Problem mit getText() Web Tier 3
B Java EE 6 Problem (EL) Web Tier 4
ruutaiokwu beanshell scope problem... Web Tier 7
P Problem mit HTML.Tag.OPTION Web Tier 3
N Problem mit Datei Streaming Web Tier 2
M Problem mit Verlinkung JSP Dynamische Tabelle Web Tier 7
S Architektur-Problem? 2 Servlets, ein Objekt Web Tier 4
F.S.WhiTeY JSF:org.apache.jasper.JasperException Problem Web Tier 2
H Richfaces - Taglib Problem gelb unterstrichen Ajax Output Web Tier 6
N Servlet: Problem mit getParameterValues Web Tier 4
7 Struts und Ajax. Problem mit Actions Web Tier 2
J GWT - RPC Problem Web Tier 6
F Problem mit JSF Anwendung Web Tier 9
I Logout - Problem => Bei Zurück Web Tier 2
I AJAX - Problem Web Tier 18
F Problem mit Struts Web Tier 2
I selectOneMenu - Problem Web Tier 6
H Firefox Background-Image Problem Web Tier 4
E GWT Server-Client Problem Web Tier 3
J Log4j problem Web Tier 7
F Problem mit der Methode request.getRemotePort() Web Tier 2
S GWT Problem Web Tier 4
M Problem mit Velocity Web Tier 2
S OSGi Bundle Problem - ClassNotFound Web Tier 4
J JSF Locales Problem Web Tier 3
J Problem mit Login Web Tier 4
MQue jsp- Problem Web Tier 4
P Problem der Parameterübergabe aus Iframe Web Tier 15
A Tomcat: beim Start des Servers einmalige Aktion aufrufen (Problem gelöst) Web Tier 2
R JSF <rich:datatable> problem Web Tier 4
S JSF Problem - Terminverwaltung - Ändern eines vorhandenen Termins Web Tier 2
S Filter Problem? Web Tier 6
E Problem mit t:saveState Web Tier 7
S Problem mit Anzeige zweier JSP's Web Tier 4
M Problem mit JSP und Bean Web Tier 2
F RichFaces, Problem mit PickList Web Tier 2
S Problem mit Servlet und Zugriff auf Orace XE Datenbank Web Tier 2
E Problem mit request.getParameter Web Tier 5
B getServletContext.getRealPath("/") Problem Web Tier 6
C Problem mit Hibernate und IceFaces Web Tier 2
S Problem mit Session - Übergabe von Kontext zu Kontext Web Tier 2
H problem bei Parameterübergabe mit beans Web Tier 3
U JSP form-Daten (ohne name-Attribut) an Servlet = Problem Web Tier 6
S jsf: übles problem mit <f:convertDateTime> Hilfe! Web Tier 2
A Selectbox Problem in JSP Web Tier 12
T Problem bei Session-Timeout Web Tier 3
S problem mit resultset Web Tier 6
U Problem bei Validierung mit Struts 2 Web Tier 1
A JSF-Ctrl h:inputText Problem mit Umlauten Web Tier 4
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
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
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
W RichFaces converter in orderingList wirft exception Web Tier 5

Ähnliche Java Themen

Neue Themen


Oben