Java null java.lang.IllegalArgumentException parsing-Problem mit If-Anweisung

Ich habe ein Problem mit der Analyse sowohl ein Datum mit java.sql.Datum.valueOf (java.lang.IllegalArgumentException) und ein integer mit Integer.parseInt (java.lang.NumberFormatException).

Ich habe ein Formular, das fordert eine barcode-Nummer, eine Datum-von und Datum-um mithilfe von HTML5 und Chrome, das eine Verbindung zu einer PostgreSQL-Datenbank im hintergrund Rückkehr eine Tabelle mit den Einträgen. Dies funktioniert perfekt, wenn alle 3 angegeben werden.

Allerdings möchte ich die Benutzer in der Lage sein, um die Suche über den barcode, so dass alle relevanten Einträge, unabhängig davon, welches Datum zurückgegeben werden. Ähnlich, einfach Termine zu bekommen, jeden Eintrag zwischen den angegebenen Terminen.

Dies ist mein Form:

<th><input type="text" name="barcode" size="20"></th>
        <th><input type="date" name="dateFrom"></th>
        <th><input type="date" name="dateTo"></th>
        <th><input type="submit" value="Submit" /></th>

Nun, ich verstehe, dass die Analyse-Funktionen nicht wie null-Werte, und zu diesem Ende habe ich verwendet eine Wenn-Anweisung, um zu überprüfen, ob ein null-Wert hat und einen Wert zuweisen:

Date dateFrom;
String stringDateFrom = request.getParameter("dateFrom");

if (stringDateFrom == null){
        dateFrom = Date.valueOf(LocalDate.MIN);
    } else {
        dateFrom = Date.valueOf(stringDateFrom);
    }

Mein Verständnis ist, dass die If-Anweisung überprüft, ob die Aussage Wahr ist, wenn es ist, es verarbeitet den code und beendet, wenn die Aussage Falsch ist es springt zu der "sonst" - Abschnitt und verarbeitet dessen code. Also, wenn ich nicht geben Sie einen Wert für die dateFrom Feld in form der Zeichenkette 'stringDateFrom' wäre null, und so ist der erste Teil der If-Anweisung ausgeführt werden soll, und überspringen Sie die zweite portion.

Dies nicht geschehen ist, sogar mit einem null-Wert für "stringDateFrom' bekomme ich die Fehlermeldung 'java.lang.IllegalArgumentException' in der Zeile unterhalb der If-Anweisung, die ich dachte, sollte übersprungen wurden?

dateFrom = Date.valueOf(stringDateFrom);

Bekomme ich die Fehlermeldung 'java.lang.NumberFormatException' mit genau dem gleichen setup, aber in der Analyse einer Ganzzahl, die Zeile code;

barcode = Integer.parseInt(stringBarcode);

Ist das etwas, was mit meinem Analyse-code oder meine if-Anweisung code?

Sorry für den langen post, ich bin ein student, und dies ist ein Teil von meinem Projekt, ich bin kein java-Programmierer, die durch den Handel 😉

Vielen Dank für jegliche Hilfe.

Edit: Gelöst

Dank unholysampler für den Hinweis mich in die richtige Richtung. Das problem war, dass die setParameter war die Rückgabe ein leerer String als adaptiert auf null und so die Bedingung war, nie getroffen.

Änderte ich den code, um zu überprüfen, ob eine leere Zeichenfolge ist, wird eine leere Zeichenfolge, und es funktioniert, d.h.

if (stringDateFrom == null) zu if (stringDateFrom.equals(""))

und

if (stringBarcode != null) zu if (!stringBarcode.equals(""))

Dank allen für Ihre Hilfe.

Edit: Stacktrace

The line " auf java.sql.Datum.valueOf(Datum.java:143)' bezieht sich auf den code;

if (d == null) {
            throw new java.lang.IllegalArgumentException();
        }

Innerhalb von java.sql.Daten

Warning:   StandardWrapperValve[logListServlet]: Servlet.service() for servlet logListServlet threw exception java.lang.IllegalArgumentException

at java.sql.Date.valueOf(Date.java:143)
at org.mypackage.HOIS.logListServlet.doPost(logListServlet.java:57)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
at java.lang.Thread.run(Thread.java:744)
  • poste bitte den stacktrace
  • Ich bin mit Netbeans 8.0 und Glashfish 4.0. Wo würde ich den stacktrace? Wäre es der Glassfish log sieht wie folgt aus Warnung: StandardWrapperValve[logListServlet]: Servlet.service() for servlet logListServlet warf Ausnahme java.lang.IllegalArgumentException bei java.sql.Datum.valueOf(Datum.java:143) auf org.MeinPaket.HOIS.logListServlet.doPost(logListServlet.java:57) at javax.- servlet.http.HttpServlet.service(HttpServlet.java:707) at javax.- servlet.http.HttpServlet.service(HttpServlet.java:790) auf org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)........
  • ja. das ist es. bitte fügen Sie es auf Ihre Frage zur Verbesserung seiner Lesbarkeit
  • Aktualisiert mit den Glashfish stacktrace.
InformationsquelleAutor KiteMad | 2014-07-30
Schreibe einen Kommentar