Matze: Java If Else ? Ich verstehs nicht

Hallo NG,

ich sags gleich. Ich bin ASP-Entwickler. Nachdem ich mehr oder weniger erfolgreich mit JAVA kämpfe, stolpere ich über ein eigentlich absolut triviales Problem.

if (request.getParameter("gueltig") != null)
{
   dwert = request.getParameter("gueltig");
}
else
{
   dwert = "01.01.03";
}

Gibt es irgend einen vernünftigen Grund weshalb er die else-Anweisung ignoriert ???

Vielen Dank im voraus.

Matze

  1. Hallo NG,

    ich sags gleich. Ich bin ASP-Entwickler. Nachdem ich mehr oder weniger erfolgreich mit JAVA kämpfe, stolpere ich über ein eigentlich absolut triviales Problem.

    if (request.getParameter("gueltig") != null)
    {
       dwert = request.getParameter("gueltig");
    }
    else
    {
       dwert = "01.01.03";
    }

    Gibt es irgend einen vernünftigen Grund weshalb er die else-Anweisung ignoriert ???

    Vielen Dank im voraus.

    Matze

    also, die if/else anweisung stimmt so... also, das einzige was da in deinem code noch nen fehler produzieren könnte is der rückgabewert von request.getParameter. maybe kommt da ja immer was != null raus, bzw, was soll das teil eigentlich zurückgeben?
    aber deine ifelse is richtig!

    viel spaß noch ;)

    1. Hallo NG,

      ich sags gleich. Ich bin ASP-Entwickler. Nachdem ich mehr oder weniger erfolgreich mit JAVA kämpfe, stolpere ich über ein eigentlich absolut triviales Problem.

      if (request.getParameter("gueltig") != null)
      {
         dwert = request.getParameter("gueltig");
      }
      else
      {
         dwert = "01.01.03";
      }

      Gibt es irgend einen vernünftigen Grund weshalb er die else-Anweisung ignoriert ???

      Vielen Dank im voraus.

      Matze

      also, die if/else anweisung stimmt so... also, das einzige was da in deinem code noch nen fehler produzieren könnte is der rückgabewert von request.getParameter. maybe kommt da ja immer was != null raus, bzw, was soll das teil eigentlich zurückgeben?
      aber deine ifelse is richtig!

      viel spaß noch ;)

      Erstmal danke ,

      also das ganze soll eigentlich nur folgendes bewirken. falls das request.gueltig leer ist soll automatisch der Wert "01.01.03" übernommen werden.

      Wenn in der Eingabemaske im Feld "gueltig" ein datum steht funktioniert es auch problemlos. Nur wenn kein Wert eingetragen wird, wird so wie ich das sehe die else-Anweisung nicht ausgeführt.

      Das Verhalten ist mir ziemlich rätselhaft.
      Grüsse Matze

      1. Hallo Matze,

        ich sags gleich. Ich bin ASP-Entwickler. Nachdem ich mehr oder weniger erfolgreich mit JAVA kämpfe, stolpere ich über ein eigentlich absolut triviales Problem.

        if (request.getParameter("gueltig") != null)
        {
           dwert = request.getParameter("gueltig");
        }
        else
        {
           dwert = "01.01.03";
        }

        Gibt es irgend einen vernünftigen Grund weshalb er die else-Anweisung ignoriert ???

        Vielen Dank im voraus.

        Matze

        also, die if/else anweisung stimmt so... also, das einzige was da in deinem code noch nen fehler produzieren könnte is der rückgabewert von request.getParameter. maybe kommt da ja immer was != null raus, bzw, was soll das teil eigentlich zurückgeben?
        aber deine ifelse is richtig!

        Ja!

        also das ganze soll eigentlich nur folgendes bewirken. falls das request.gueltig leer ist soll automatisch der Wert "01.01.03" übernommen werden.

        Wenn in der Eingabemaske im Feld "gueltig" ein datum steht funktioniert es auch problemlos. Nur wenn kein Wert eingetragen wird, wird so wie ich das sehe die else-Anweisung nicht ausgeführt.

        Das Verhalten ist mir ziemlich rätselhaft.

        Nein!

        Ich tippe mal auf Applet.getParameter(String)

        http://java.sun.com/j2se/1.4/docs/api/java/applet/Applet.html
        ->#getParameter(java.lang.String)

        getParameter
        public String getParameter(String name)
        Returns the value of the named parameter in the HTML tag. For example, if this applet is specified as
         <applet code="Clock" width=50 height=50>
         <param name=Color value="blue">
         </applet>
        then a call to getParameter("Color") returns the value "blue".
        The name argument is case insensitive.
        Parameters:
        name - a parameter name.
        Returns:
        the value of the named parameter, or null if not set.

        Diese Funktion gibt nur dann null zurück wenn der Parameter _nicht gesetzt_ ist. Wenn z.B.

        <applet code="Clock" width=50 height=50>
         <param name=gueltig value="">
         </applet>

        steht, dann gibt die Funktion einen Leerstring "" zurück.

        Gruß

        Axel

        1. Hallo Matze,

          ich sags gleich. Ich bin ASP-Entwickler. Nachdem ich mehr oder weniger erfolgreich mit JAVA kämpfe, stolpere ich über ein eigentlich absolut triviales Problem.

          if (request.getParameter("gueltig") != null)
          {
             dwert = request.getParameter("gueltig");
          }
          else
          {
             dwert = "01.01.03";
          }

          Gibt es irgend einen vernünftigen Grund weshalb er die else-Anweisung ignoriert ???

          Vielen Dank im voraus.

          Matze

          also, die if/else anweisung stimmt so... also, das einzige was da in deinem code noch nen fehler produzieren könnte is der rückgabewert von request.getParameter. maybe kommt da ja immer was != null raus, bzw, was soll das teil eigentlich zurückgeben?
          aber deine ifelse is richtig!
          Ja!

          also das ganze soll eigentlich nur folgendes bewirken. falls das request.gueltig leer ist soll automatisch der Wert "01.01.03" übernommen werden.

          Wenn in der Eingabemaske im Feld "gueltig" ein datum steht funktioniert es auch problemlos. Nur wenn kein Wert eingetragen wird, wird so wie ich das sehe die else-Anweisung nicht ausgeführt.

          Das Verhalten ist mir ziemlich rätselhaft.
          Nein!

          Ich tippe mal auf Applet.getParameter(String)

          http://java.sun.com/j2se/1.4/docs/api/java/applet/Applet.html
          ->#getParameter(java.lang.String)

          getParameter
          public String getParameter(String name)
          Returns the value of the named parameter in the HTML tag. For example, if this applet is specified as
           <applet code="Clock" width=50 height=50>
           <param name=Color value="blue">
           </applet>
          then a call to getParameter("Color") returns the value "blue".
          The name argument is case insensitive.
          Parameters:
          name - a parameter name.
          Returns:
          the value of the named parameter, or null if not set.

          Diese Funktion gibt nur dann null zurück wenn der Parameter _nicht gesetzt_ ist. Wenn z.B.

          <applet code="Clock" width=50 height=50>
           <param name=gueltig value="">
           </applet>

          steht, dann gibt die Funktion einen Leerstring "" zurück.

          Gruß

          Axel

          ja, oder eben so ;o)

          if (request.getParameter("gueltig") != "")

          probiers mal asu!

          1. Hallo,

            http://learn.to/quote/

            ja, oder eben so ;o)

            if (request.getParameter("gueltig") != "")

            Örks! Java-Anfänger-Fehler Nr.1! Niemals Strings mit == oder != vergleichen!
            Immer String.equals(String) verwenden!
            (Den Grund darfst du in einer Java-Einführung deiner Wahl nachlesen.)

            Gruß
            Slyh

            --
            Es gibt nur 10 Arten von Menschen. Solche, die das Binärsystem verstehen, und solche, die es nicht verstehen.
            1. Und was passiert wenn man beim request "null" zurückbekommt?
              klappt es dann auch noch mit .equals ???????
              ;-)

              P.S.: ich sage nur NullPointer.Exception

              1. Hallo,

                Und was passiert wenn man beim request "null" zurückbekommt?
                klappt es dann auch noch mit .equals ???????

                Ja, das klappt auch:

                if ("".equals(request.getParameter("dingens"))) {
                  ...
                }

                Weitere Fragen? ;-)

                Gruß
                Slyh

                --
                Es gibt nur 10 Arten von Menschen. Solche, die das Binärsystem verstehen, und solche, die es nicht verstehen.
        2. Hallo Matze,

          ich sags gleich. Ich bin ASP-Entwickler. Nachdem ich mehr oder weniger erfolgreich mit JAVA kämpfe, stolpere ich über ein eigentlich absolut triviales Problem.

          if (request.getParameter("gueltig") != null)
          {
             dwert = request.getParameter("gueltig");
          }
          else
          {
             dwert = "01.01.03";
          }

          Gibt es irgend einen vernünftigen Grund weshalb er die else-Anweisung ignoriert ???

          Vielen Dank im voraus.

          Matze

          also, die if/else anweisung stimmt so... also, das einzige was da in deinem code noch nen fehler produzieren könnte is der rückgabewert von request.getParameter. maybe kommt da ja immer was != null raus, bzw, was soll das teil eigentlich zurückgeben?
          aber deine ifelse is richtig!
          Ja!

          also das ganze soll eigentlich nur folgendes bewirken. falls das request.gueltig leer ist soll automatisch der Wert "01.01.03" übernommen werden.

          Wenn in der Eingabemaske im Feld "gueltig" ein datum steht funktioniert es auch problemlos. Nur wenn kein Wert eingetragen wird, wird so wie ich das sehe die else-Anweisung nicht ausgeführt.

          Das Verhalten ist mir ziemlich rätselhaft.
          Nein!

          Ich tippe mal auf Applet.getParameter(String)

          http://java.sun.com/j2se/1.4/docs/api/java/applet/Applet.html
          ->#getParameter(java.lang.String)

          getParameter
          public String getParameter(String name)
          Returns the value of the named parameter in the HTML tag. For example, if this applet is specified as
           <applet code="Clock" width=50 height=50>
           <param name=Color value="blue">
           </applet>
          then a call to getParameter("Color") returns the value "blue".
          The name argument is case insensitive.
          Parameters:
          name - a parameter name.
          Returns:
          the value of the named parameter, or null if not set.

          Diese Funktion gibt nur dann null zurück wenn der Parameter _nicht gesetzt_ ist. Wenn z.B.

          <applet code="Clock" width=50 height=50>
           <param name=gueltig value="">
           </applet>

          steht, dann gibt die Funktion einen Leerstring "" zurück.

          Gruß

          Axel

          Hallo Axel,

          logo. Der Wert ist auch "". Dachte damit ist das Problem gelöst. Denkste.

          Ich habe es jetzt so umgestellt:
          if (request.getParameter("gueltig") == "")
          {
             dwert = "01.01.03";
          }
          else
          {
             dwert = request.getParameter("gueltig");
          }

          Mit dem Ergegnis, dass er jetzt die else-Anweisung ausführt, aber die If nicht.
          Auch wenn ich es drehe, habe ich den gleichen Effekt:
          if (request.getParameter("gueltig") != "")
          {
             dwert = request.getParameter("gueltig");
          }
          else
          {
             dwert = "01.01.03";
          }

          Gruß Matze

          1. Hallo Matze,

            logo. Der Wert ist auch "". Dachte damit ist das Problem gelöst. Denkste.

            Ich habe es jetzt so umgestellt:
            if (request.getParameter("gueltig") == "")
            if (request.getParameter("gueltig") != "")

            Also, Strings mit == zu vergleichen ist unsicher. Dafür sollte man die Methode equals des String-Objektes nehmen.
            http://java.sun.com/j2se/1.4/docs/api/java/lang/String.html
            -> Methode equals(Object anObject)

            Aber so kompliziert muss es wahrscheinlich gar nicht gemacht werden.
            Annahmen:
            datwert ist ein String
            request.getParameter("gueltig") liefert einen String zurück

            Wenn in request.getParameter("gueltig") irgendwas drinsteht, soll dieser Inhalt in datwert übernommen werden. Wenn request.getParameter("gueltig") leer ist, soll der Standard-Wert genommen werden.

            datwert = request.getParameter("gueltig");
            if (datwert.lenght() < 1)
            {
               dwert = "01.01.03";
            }

            Gruß

            Axel

          2. Hallo,

            auch dir ein freundliches http://learn.to/quote/.

            Um welche getParameter(String)-Methode geht es nun eigentlich? Die vom
            Interface javax.servlet.ServletRequest bzw. javax.servlet.HttpServletRequest?
            Wenn ja, dann gibt diese - wie du in der API-Dokumentation nachlesen kannst -
            tatsächlich null zurück, wenn ein Parameter mit dem von dir angegebenen
            Namen nicht existiert.
            Da deine if-else-Konstruktion zumindest korrekt erscheint, vermute ich den
            Fehler an irgend einer anderen Stelle.
            (Probier doch zum Beispiel mal alle Parameternamen über die Methode
            ServletRequest.getParameterNames() zu erfragen und auszugeben.)

            Gruß
            Slyh

            --
            Es gibt nur 10 Arten von Menschen. Solche, die das Binärsystem verstehen, und solche, die es nicht verstehen.
  2. Hi,

    if (request.getParameter("gueltig") != null)
    {
       dwert = request.getParameter("gueltig");
    }
    else
    {
       dwert = "01.01.03";
    }

    dwert = request.getParameter("gueltig");
    if ((dwert == null) || (dwert.length() == 0))
    // es gibt zwei Fälle: der Parameter ist gar nicht definiert, oder sein Wert ist leer
    {
        dwert = "01.01.03";
    }

    cu,
    Andreas

  3. Hallo NG,

    ich sags gleich. Ich bin ASP-Entwickler. Nachdem ich mehr oder weniger erfolgreich mit JAVA kämpfe, stolpere ich über ein eigentlich absolut triviales Problem.

    if (request.getParameter("gueltig") != null)
    {
       dwert = request.getParameter("gueltig");
    }
    else
    {
       dwert = "01.01.03";
    }

    Gibt es irgend einen vernünftigen Grund weshalb er die else-Anweisung ignoriert ???

    Vielen Dank im voraus.

    Matze

    Hi Matze,

    ich gehe davon aus, das du Java Servlet Pages programmieren willst.

    Probiere doch mal folgendes aus:

    if (request.getParameter("gueltig") != null && (!request.getParameter("gueltig").equals("") )
    {
       dwert = request.getParameter("gueltig");
    }
    else
    {
       dwert = "01.01.03";
    }