[Struts] Veld valideren als double

Pagina: 1
Acties:

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Topicstarter
In mijn Struts pagina heb ik een aantal velden, waaronder ook een aantal percentages die moeten gevalideerd worden op geldigheid. Deze waarden worden uiteindelijk opgevuld door mijn form-bean die 1-op-1 gemapt is met mijn VO (waarin deze velden als double zijn opgenomen).

Nu is dit soort van validatie natuurlijk peanuts als ik gebruik kan maken van het Validator framework, maar die vrijheid heb ik op dit project dus niet. Alles moet handmatig gevalideerd worden met Java code in de Formbean.

Als een user het percentage veldje leeg laat of er een String in meegeeft, dan zal Struts de default waarde van een double erin plakken; 0.0 dus, nog alvorens ik het kan valideren; dit werkt dus niet.

Wat ik kan doen is voor elk percentage veldje een soort van buffer-veldje voorzien, waarop de validatie het eerst kan plaatsvinden en dan later in het echte veldje gestopt kan worden (en gedelegeerd naar het VO). Maar dan zit ik overal met dubbele input veldjes. En dit wil ik niet echt.

Zijn er geen generiekere manieren om dit soort van Validatie te doen?

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Topicstarter
ochja, waarom niet.... kickje
Kom hier namelijk weer hetzelfde probleem tegen

  • momania
  • Registratie: Mei 2000
  • Laatst online: 02-05 21:40

momania

iPhone 30! Bam!

kan je niet gewoon in delen van het validatie framework hiervoor 'kopieren' :?

En gebruik je nu een double of een Double?

[ Voor 7% gewijzigd door momania op 22-08-2005 13:44 ]

Neem je whisky mee, is het te weinig... *zucht*


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 01-05 20:17

Janoz

Moderator Devschuur®

!litemod

Een Double heeft als default waarde toch null ipv 0.0? Of gebruik je een double? If (laatste) {gebruik eerste} ;)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Topicstarter
We moeten hier double's gebruiken (primitive), omdat dit performanter is :o

En aangezien 0.0 niet als default gekozen mag worden, moeten we dit veldje expliciet leeg maken. Nu doe ik dit dus door een String-bufferfield te gebruiken die de userinput afvangt en indien correct parse ik dit naar een double... maar is dit niet te omslachtig?
Er zijn vast wel simpelere/betere manieren :?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 01-05 20:17

Janoz

Moderator Devschuur®

!litemod

Ik denk niet dat je een andere mogelijkheid hebt. Vervelende eisen leveren vaak vervelende oplossingen op.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Topicstarter
Inderdaad, en daarom doe ik nu ook stiekem alles met Double's ;)
Maar in de oudere modules, is dus alles nog the old way

  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Voor performance redenen maakt het niet veel uit of je nu een double of een Double gebruikt. Tuurlijk een primitive is altijd sneller maar denk je nu echt dat dat op de totale overhead van je browser <-> server elles eromheen zoveel uitmaakt dat het een 0,0001 sec langer duurt? Lijkt mij sterk dat je dit verschil merkt.

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


  • momania
  • Registratie: Mei 2000
  • Laatst online: 02-05 21:40

momania

iPhone 30! Bam!

Performance lijkt mij ook niet z'n issue. Je zou het even kunnen performance testen, maar de verschillen zullen waarschijnlijk niet aantoonbaar zijn of op z'n meest 1 ms.

Vergeet niet dat je door het gebruik van Double's andere controles weer kan weg laten, waardoor je eigenlijk performance wint ;)

Neem je whisky mee, is het te weinig... *zucht*


  • Cuball
  • Registratie: Mei 2002
  • Laatst online: 30-04 14:30
Dit probleem doet zich niet enkel voor bij Double's maar als je bv met Integer types werkt en de gebruiker submit de form zonder in dit veld iets in te vullen dan komt daar automatisch een 0 staan.

Kan heel verveleld / verwarrend zijn voor de gebruiker... Hebben jullie hier workarounds voor ?

bij ons was het grootste probleem als de gebruiker met de muis terug in veld klikt om er effectief iets in te typen dan moet hij eerst de 0 verwijderen die er staat voordat ie een nieuwe waarde kan ingeven. Hebben we opgelost door gewoon vanaf dat het veld geslecteerd wordt alles de text te selecteren, maar een leeg veld is uiteraard een mooiere oplossing.

"Live as if you were to die tomorrow. Learn as if you were to live forever"


  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Topicstarter
Ik weet het :D ... performance is ook helemaal geen issue (zéker niet in een logge en zware j2ee ejb applicatie op een WebSphere appserver), maar als dat in het begin wordt opgelegd doe je dat gewoon.
Verder krijg je dan natuurlijk nog tal van andere problemen, in je ejbCreate(), falen de FK constraints omdat deze niet null kunnen zijn, e.d.

@cuball: Dat probleem wordt veroorzaakt door de struts validator, deze gaat het veld terug initialiseren op 0. Je kan misschien alle 0 velden, alvorens deze naar de gebruiker terug te sturen terug op null zetten?

  • Cuball
  • Registratie: Mei 2002
  • Laatst online: 30-04 14:30
@cuball: Dat probleem wordt veroorzaakt door de struts validator, deze gaat het veld terug initialiseren op 0.
hmm zelf al zeg ik dit het veld niet expliciet moet gevalideerd worden ? (bv validation.xml bestand is leeg) dan wordt daar nog altijd 0 ingeplaatst.
Je kan misschien alle 0 velden, alvorens deze naar de gebruiker terug te sturen terug op null zetten?
wat als de gebruiker dan 0 ingeeft ? opeens is die 0 dan verdwenen.

"Live as if you were to die tomorrow. Learn as if you were to live forever"

Pagina: 1