Ankündigung

Einklappen
Keine Ankündigung bisher.

in velocity string in floatformat wandeln

Einklappen
X

in velocity string in floatformat wandeln

Einklappen
  • Filter
  • Zeit
Alles löschen
neue Beiträge

  • in velocity string in floatformat wandeln

    Ich hatte hier schonmal gefragt bin mit den Ergebnissen aber nicht weitergekommen.
    Folgendes:

    Auf einer Eingabeseite die nicht gespeichert wird, lese ich per Java Script einen Wert aus einem Float, Datenfeld. Diesen Wert übergebe ich per JAVA Script
    in einem Requestwert ("rq_VpM"). In der Zielseite lese ich den Wert im velocity per #set($VpM = $Request.get("rq_VpM")) aus. Das funktioniert!
    Dieser Wert soll dann per velocity mit Insert .... in eine andere Tabelle geschrieben werden. Dort kommt der Fehler cannot Cast string to float.....
    Die Requestvariable $VpM ist mit Debugg.inspect ermittelt, vom Typ String. Was auch normal ist! Aber wie komme ich dann zu einem Float formatierten Wert?
    Ich habe schon versucht mit .replace(",",".") einfach , durch . zu erstezen nützt nix. Habs mit TextUtil versucht.


    #set($ZpV = $Request.get("rq_ZpV"))
    ZpV=$ZpV<br> ---> zeigt 4.21 an so wie eingegeben
    $DEBUG.inspect($ZpV)<br> ...ergibt String mit Wert 4.21 ..alles ok.
    #set($ZpVFl = $TextUtil.parseFloat($ZpV)) --> keine Fehlermeldung
    ZpVFload=$ZpVFl<br>
    $DEBUG.inspect($ZpVFl)<br> ---> ergibt Float! aber der Wert ist "0"

    habe auch schon $Float.parseFloat(String) versucht, aber da scheint die Syntax falsch ! Hat jemand ne Ahnung.? Komischerweise lief das unter Intrexx 18.03 problemlos ohne jede Konvertierung. Danke!

  • #2
    In der Velocity Bibliothek steht das meines Erachtens alles:

    Double String parsen: $TextUtil.parseDouble("1234.56")
    Float String parsen: $TextUtil.parseFloat("1234.56F")


    Also einfach
    Code:
    $TextUtil.parseFloat($Request.get("rq_VpM"))

    Kommentar


    • #3
      ok Danke zunächst. Mir ist aber nicht klar, ob ich dem Ausdruck $TextUtil...... noch einem Wert zuweisen muss: Also #set($ZpVFloat = $TextUtil.parseFloat($ZpVString)) oder ob die ursprüngliche Variable $ZpVString nach $TextUtil.... einfach in eine Variable vom Typ Float "gewandelt" wird. Also habe ich beide Varianten versucht und das Ergebnis ist im Screenshot zu sehen. Ich bekomme es nicht hin! Habe sogar in Variante 4 noch das , (Dezimaltrenner" noch durch einen . ersetzt. Geht dennoch nicht. Könntest du mir bitte mal notieren, wie genau die Anweisung lauten muss, damit ich aus einer StringVariablen $ZpVString eine Float Variable $ZpVFloat erhalte! Vielen Dank. Sicher habe ich einfach einen Syntaxfehler.. Die Anweisungen im Screenshot habe natürlich für die Variablen ZpV und TextUtil noch das voran gestellte $ und vorm set das #set !!
      Angehängte Dateien

      Kommentar


      • #4
        Die Methode parseFloat​(String p_strIn) ist laut den Docs deprecated. Du kannst stattdessen die Methode parseDouble​(String p_strIn) nutzen.

        Alternativ bietet es sich für dich vielleicht auch an, mit den typisierten Parametern (Kontextobjekt $Parameter) zu arbeiten. Dann hat sich das mit dem Parsen erledigt...

        Kommentar

        Lädt...
        X