java.lang.NumberFormatException: For input string: ...

LadyMilka

Aktives Mitglied
Hallo zusammen,

ich hoffe ich bin hier im richtigen Unterforum.

In meinem Projekt arbeite ich mit Hibernate(3.2.5) und Spring(3.0.2).

Wenn ich in meiner JSP auf eine Ergebnismenge zugreife, erhalte ich folgende Exception:
java.lang.NumberFormatException: For input string: "uname"

meine meldung.jsp:
HTML:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Test 03</title>
    </head>
    <body>
        <h1>Hallo Benutzer </h1>
        <c:out value="${fn:length(myModel.warn)}" />
        <c:out value="${myModel.warn}" />
         <c:forEach items="${myModel.warn}" var="warns">
            <c:out value="${warns.uname}" />

        </c:forEach> 
        <c:out value="${fn:length(myModel.info)}" />
        <c:out value="${myModel.info}" />
    </body>
</html>

mein indexController.java:
Java:
public class indexController extends SimpleFormController{
    private Geschaeftslogik logik;
    private Object CommandTO="test";
    private String platzhalter="index";

    @Override
    protected Object formBackingObject(HttpServletRequest request)throws ServletException{
        return CommandTO;
    }

    public void setGeschaeftslogik(Geschaeftslogik logik){
        this.logik=logik;
    }

    @Override
    protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) {
        String bla=request.getParameter("testAuswahl");
        if(bla.equals("1")){
            [...]
        }
        if(bla.equals("2")){
            [...]
        }
        if(bla.equals("3")){
            System.out.println("3. Option gewählt");
            Map myModel=new HashMap();
            myModel.put("warn", logik.getWarnungen("mmuster", 2));
            myModel.put("info", logik.getWarnungen("mmuster", 1));
            return new ModelAndView("meldung", "myModel", myModel);
        }
        else{
            System.out.println("else");
            return new ModelAndView(platzhalter);
        }
    }
}

in der Geschaeftslogik.java wird diese Funktion aufgerufen:
Java:
public List getWarnungen(String name, Integer typ){
        return meldungen.getWarnungen(name, typ);
    }

MeldungenDAO.java:
Java:
public class MeldungenDAO extends HibernateDaoSupport{

    public List getWarnungen(String name, Integer typ){
        List test= getHibernateTemplate().findByNamedParam(
                "select u.uname, count(m.mid) as anzahl "
                + "FROM Meldungen as m, MeldungInfo as mi, User as u "
                + "WHERE m.uid=u.id AND u.uname= :name "
                + "AND m.mid=mi.id AND mi.typ= :typ group by uid",
                new String[]{"name", "typ"}, new Object[]{name, typ});
        return test;
    }
}

Hibernate generiert einen SQL-Befehl und dieser liefert mir auch ein Ergebniss, nur kann ich auf dieses nicht zugreifen.

Lade ich mit loadAll(), eine komplette Tabelle kann ich die einzelnen Spalten in einer JSP abfragen.

Ich hab schon an verschiedenen Stellen nach einer Lösung gesucht, allerdings nichts gefunden.
 
S

SlaterB

Gast
warum machst du sowas kompliziertes?
wäre es nicht angebracht, vorher einmal in normalen Java-Code zu versuchen,
> logik.getWarnungen("mmuster", 2)
komplett auszugeben?

die WarnListe ist nämlich anscheinend eine Liste von Object[],
jeder Eintrag, der dann am Ende durch
> <c:forEach items="${myModel.warn}" var="warns">
in der Variable warns steht, ist ein Object[], darauf kann man höchstens mit Index 0 oder 1 zugreifen, was soll
> <c:eek:ut value="${warns.uname}" />
bedeuten?

hättest du vorher in normalen Java geübt, etwa
Java:
List warnungen = ..;
for (was auch immer) {
   xy.getUname();
}
dann wäre dir dort mit genaueren Fehlermeldungen aufgefallen, dass das komplett nicht geht
 

LadyMilka

Aktives Mitglied
uname ist eine Spalte des Ergebnisses.

aber wenn ich mit loadAll(); eine ganze Tabelle abfrage kann ich auf gleicher Weise wie oben beschrieben auf die Spalten zugreifen.

Java:
public List<User> selectAll() {        
            return getHibernateTemplate().loadAll(User.class);        
    }

HTML:
<table border="1" frame="void">
            <tr>
                <th>ID</th>
                <th>UserName</th>
                <th>Nachname</th>
                <th>Status</th>
                <th>Geschlecht</th>
            </tr>
            <c:forEach items="${myModel.user}" var="user">
                <tr>
                    <td><c:out value="${user.id}" /></td>
                    <td><c:out value="${user.uname}" /></td>
                    <td><c:out value="${user.nachname}" /></td>
                    <td><c:out value="${user.status}" /></td>
                    <td><c:out value="${user.gender}" /></td>
                </tr>
            </c:forEach>
        </table>

Java:
if(bla.equals("2")){
            System.out.println("2. Option gewählt");
            Map myModel=new HashMap();
            myModel.put("user", logik.selectAllUser());
            return new ModelAndView("test02", "myModel", myModel);
        }

dans ganze funktioniert ohne Probleme. Der Fehler tritt also nur auf, wenn ich die query selbst generiere.

das mit dem Javacode werd ich mal ausprobieren, vielleicht helfen die Fehlermeldungen dann weiter.
 
S

SlaterB

Gast
wie gesagt:
List<User> selectAll()
-> User mit getUname();

List getWarnungen()
-> Object[] mit Index 0/1

du kannst es so lassen und in der JSP Index 0/1 verwenden, oder dafür sorgen, dass statt Object[] andere Objekte in der Liste sind

ich persönlich nehme einfache Datenobjekte, hier etwa
Java:
public class UserRecord {
  private String uName;
  private int count; // evtl. long je nach Hibernate-Version

  // Konstruktor, setter, getter
}
dann liefert eine Query "select new package.UserRecord(u.uname, count(m.mid)) ... "
eine Liste von UserRecord-Objekte, die dann mit uname abfragbar sind

für andere Abfragen kann man die Klasse auch verwenden, mehr Attribute, mehr Konstruktoren
 

LadyMilka

Aktives Mitglied
Danke für deine Antwort, hab jetzt begriffen was du meinst mit Object[] und über Indizes zugreifen.

Ich hab die JSP jetzt entsprechend geändert:
HTML:
<body>
        <c:forEach items="${myModel.warn}" var="warns">
            <h1>Hallo <c:out value="${warns[0]}" /> </h1>
            Sie haben
            <c:out value="${warns[1]}" /> Warnung(en) und
        </c:forEach> 
        <c:forEach items="${myModel.info}" var="infos">
            <c:out value="${infos[1]}" /> Information.
        </c:forEach>
    </body>

Ich hab für jede Tabelle, die in der DB enthalten ist, eine eigene Klasse mit getter und setter. Für die benutzte Abfrage greif ich allerdings auf 3 Tabellen zu. Ich werd mir mal überlegen ob ich noch eine entsprechende Klasse anlege die mein Ergebniss präsentiert.
 
S

SlaterB

Gast
je nach Nutzen im Programm kann man natürlich auch ganz andere Dinge machen, statt UserRecord etwa
Java:
public class MeldungRecord {
  private String user;
  private int count; // evtl. long je nach Hibernate-Version
 
  // Konstruktor, setter, getter
}
was dann sowohl Info als auch Warnung passt
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Tomcat - java.lang.OutOfMemoryError: PermGen space Web Tier 0
S java.lang.ExceptionInInitializerError: Wieso??? Web Tier 3
Streeber java.lang.NoClassDefFoundError: org/sqlite/NativeDB Web Tier 0
B JSF Mojarra 2.1.5: java.lang.IllegalStateException: Cannot create a session after the response has been Web Tier 7
N java.lang.NoClassDefFoundError: org/jdom/JDOMException Web Tier 3
N Servlet und java.lang.NoClassDefFoundError Web Tier 4
LimDul Komplexe Generierung von Java-Klassen aus WSDL Web Tier 1
E Java Servlet doPost request, Mehrere Parameter mit demselben Namen aus Tabellenzeilen Web Tier 2
platofan23 Java Login Überprüfung ohne Srciptlets in der JSP Web Tier 4
Dimax JSP Progress Bar in JSP nur mit Java Web Tier 4
S Einträge aus Datenbank einzeln darstellen (JSP, JAVA, HTML) Web Tier 9
R JavaScript für Java Enterprise Entwickler Web Tier 1
O JSF Java Unsigned Applet PrivilegedActionException Problem Web Tier 2
S JSP Hm... Vorlage für Java Basierende Webseite? Web Tier 0
S Button klick soll Java methode aufrufen Web Tier 2
F JSP jSP Datei mit normalem Java Programm auslesen? Web Tier 5
T Spark Java Web Framework Web Tier 0
G Probleme mit Java + Tomcat | Cannot switch on a value of type String for source level below 1.7 Web Tier 8
N JSP Free Webhoster Java Backend? PHP? Web Tier 1
D Java EE Servlet login Problem Web Tier 1
L Servlet Java Entschlüsselungsprogramm in Webapplikation einbinden Web Tier 0
M GWT - Externe Java Libs auf Server Seite - zB. JDBC Web Tier 6
S Java Bean und Java Servlet Web Tier 2
L java.io.NotSerializableException für domain Objekte - Design Problem? Web Tier 12
H MVC in Java pur / Controller als Instanz? / Theorie! Web Tier 4
T Einsteigerfragen zu Servlets/Webprogrammierung mit Java Web Tier 11
J Übergabe von Parameter aus JSP an Java Web Tier 2
nrg Java-Code in Taglib wird nicht richtig ausgeführt. Web Tier 7
D JSF Überprüfen der Session ID in JSF und JAVA Web Tier 9
H JSP, Eclipse, Tomcat - Java Klasse wird nicht gefunden Web Tier 8
A Parameterübergabe an Servlet und Aufruf von Servlets per Java Code Web Tier 7
J JSF Java Beans Konventionen Web Tier 2
P Blog in Java/JSP Web Tier 5
S Per JavaScript Java ansteuern - Welche Technik? Web Tier 2
T Seam-Komponenten oder Java Bean soll direkt nach Appserver-Start "leben" Web Tier 4
B Thread start bei Java Web Anwendung Web Tier 6
M Suche Java Framework Web Tier 2
B Tomcat 6 ergibt Fehler - java.net.SocketException Web Tier 2
G Probleme mit EclipseLink und Java.util.Date Web Tier 3
ruutaiokwu js kalendar, der mit java.text.SimpleDateFormat kombatibel ist... Web Tier 4
B Java EE 6 Problem (EL) Web Tier 4
F Migration eines CMS von PHP nach JAVA Web Tier 3
R GWT 2.1.1 mit Java 1.6 statt 1.5 Web Tier 8
W JSP - Attribut-Werte aus JAVA-Klasse ? Web Tier 8
T Werte aus java Klasse in jsp nutzen Web Tier 5
M JSP Ausgabe von Java-Objekten Web Tier 7
D JSP, Java Applets einbinden Web Tier 2
H Probleme beim Aufrufen von Java- oder Servlet-Methoden aus Javascript Web Tier 2
K Bilder in Java-Webapplikationen Web Tier 12
S Java Servlet Content Type Web Tier 3
K Analye einer Seite (Java, JSP, ...) Web Tier 12
J rich:modalpanel vom java-code aus öffnen und schliessen Web Tier 2
S Expression Language in Java Web Tier 13
A Ssh connection mit java jsch? Web Tier 2
W Java code aus JSP-File durch JSTL code ersetzen Web Tier 8
M Body onUnload Java Methode aufrufen Web Tier 13
F Frage zu Java Beans Web Tier 17
M Java Framework für größere Projekte verwenden Web Tier 5
U access denied bei Datei Schreiben mit Java unter Linux trotz gesetzter Rechte Web Tier 2
P Java-Program -> Web Programm Web Tier 6
F Java Applets in html einbinden Web Tier 10
A SSL-Zertifikat in Java-Webanwendungen laden Web Tier 4
ruutaiokwu Wert hinter JSP-Tag nach Java-String in Skriptlet Web Tier 4
N java bean in eclipse Web Tier 6
S Java Code in JSF Web Tier 10
D request.contextPath in Java-Klasse ausführen Web Tier 5
T In einem Struts Tag Werte mit Java einfügen Web Tier 2
G [JAVA / JSP] ArrayList in JSTL foreach verarbeiten Web Tier 4
G CSV-Anbindung an Java Web Tier 2
G Java Server Face Performancelastig? Web Tier 2
H Java Servlet und HTML Form Web Tier 3
U Java Application auf Tomcat Web Tier 5
G Validierung mit Java Server Faces Web Tier 4
I JSF: String abschneiden, wenn zu lang Web Tier 2

Ähnliche Java Themen

Neue Themen


Oben