# Decimal : La validation d’un formulaire génère une erreur en preRelease et pas d’erreur en Release

**URL:** <https://community.simplicite.io/t/decimal-la-validation-d-un-formulaire-genere-une-erreur-en-prerelease-et-pas-d-erreur-en-release/1747>\
**Category:** Support\
**Tags:** v4-0\
**Created:** [September 30, 2019, 8:09am UTC](https://community.simplicite.io/t/decimal-la-validation-d-un-formulaire-genere-une-erreur-en-prerelease-et-pas-d-erreur-en-release/1747 "2019-09-30T08:09:29Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Abed](https://community.simplicite.io/user_avatar/community.simplicite.io/abed/32/310_2.png) [@Abed](https://community.simplicite.io/u/Abed)\
**Post date:** [September 30, 2019, 8:09am UTC](https://community.simplicite.io/t/decimal-la-validation-d-un-formulaire-genere-une-erreur-en-prerelease-et-pas-d-erreur-en-release/1747/1 "2019-09-30T08:09:29Z")

</div>

Bonjour,

Quand je valide le formulaire de l’objet « ImmoFinancialElement » en preRelease, j’obtiens les erreurs suivantes :

```auto
2019-09-30 09:54:30,248 ERROR [com.simplicite.util.ObjectDirect] SIMPLICITE|https://e3m.simplicite.io:10163||ECORED0001|system|com.simplicite.util.ObjectDirect|save||Erreur ImmoFinancialElement
    java.lang.NumberFormatException: Character N is neither a decimal digit number, decimal point, nor "e" notation exponential mark.
     at java.base/java.math.BigDecimal.(BigDecimal.java:518)
     at java.base/java.math.BigDecimal.(BigDecimal.java:401)
     at java.base/java.math.BigDecimal.(BigDecimal.java:834)
     at com.simplicite.util.engine.DBAccess.setHost(DBAccess.java:751)
…

```

Alors que la validation du même formulaire en release ne génère pas d’erreur.  
Merci d’avance pour votre aide.  
Abed.

Instance en prerelease :

 ![prerelease](https://community.simplicite.io/uploads/default/original/2X/8/808d2bb81adbbe6e91a500c90b5189ece865e0c6.png)

Instance en release :

 ![release](https://community.simplicite.io/uploads/default/original/2X/3/37c80df570f7110143ed4cfe485f388e808e377a.png)

---

<div class="post-metadata">

**Author:** ![Francois](https://community.simplicite.io/user_avatar/community.simplicite.io/francois/32/6448_2.png) [@Francois](https://community.simplicite.io/u/Francois)\
**Post date:** [September 30, 2019, 8:45am UTC](https://community.simplicite.io/t/decimal-la-validation-d-un-formulaire-genere-une-erreur-en-prerelease-et-pas-d-erreur-en-release/1747/2 "2019-09-30T08:45:33Z")

</div>

Bonjour,

Ca semble venir d’un problème de host-value pour un champ bigdecimal.

- quelle est le type de votre champ (float ? decimal long/big decimal, précision… ?)
- et la valeur du champ saisi à l’écran ?

Il y a peut-être une subtilité dûe au changement de JDK 8=\>12 sur les big decimals.  
on va regarder

---

<div class="post-metadata">

**Author:** ![Abed](https://community.simplicite.io/user_avatar/community.simplicite.io/abed/32/310_2.png) [@Abed](https://community.simplicite.io/u/Abed)\
**Post date:** [September 30, 2019, 9:05am UTC](https://community.simplicite.io/t/decimal-la-validation-d-un-formulaire-genere-une-erreur-en-prerelease-et-pas-d-erreur-en-release/1747/3 "2019-09-30T09:05:42Z")

</div>

Merci @Francois,

Le type de tous nos champs numériques est : décimale doubles (11,2)  
voici le contenu des attributs du formulaire qui pose pb :

 ![Formulaire](https://community.simplicite.io/uploads/default/original/2X/a/afcce5f298fa808c6f51f76ecf2b66ae0fd48a3f.png)

---

<div class="post-metadata">

**Author:** ![Francois](https://community.simplicite.io/user_avatar/community.simplicite.io/francois/32/6448_2.png) [@Francois](https://community.simplicite.io/u/Francois)\
**Post date:** [September 30, 2019, 11:52am UTC](https://community.simplicite.io/t/decimal-la-validation-d-un-formulaire-genere-une-erreur-en-prerelease-et-pas-d-erreur-en-release/1747/4 "2019-09-30T11:52:45Z")

</div>

Je ne reproduis pas ce comportement en prerelease sur un champ de ce type. Avez vous testé d’autres objets avec un float ?

> [@Abed](#):
>
> java.lang.NumberFormatException: Character N…

Je pense que votre formulaire poste un `NaN` dans la valeur d’un champ, il faudrait savoir lequel. Si c’est du code spécifique ou un champ dans un contexte particulier.

Il faut debugger la valeur de tous les attributs dans votre preSave pour voir quel numérique est faux  
en ajoutant une trace this.toString() de l’objet.

A minima au preSave vous pourrez tester le NaN et forcer une valeur “”.  
Si cela vient d’une anomalie socle dans un contexte particulier, on corrigera.

---

<div class="post-metadata">

**Author:** ![Abed](https://community.simplicite.io/user_avatar/community.simplicite.io/abed/32/310_2.png) [@Abed](https://community.simplicite.io/u/Abed)\
**Post date:** [September 30, 2019, 12:39pm UTC](https://community.simplicite.io/t/decimal-la-validation-d-un-formulaire-genere-une-erreur-en-prerelease-et-pas-d-erreur-en-release/1747/5 "2019-09-30T12:39:47Z")

</div>

Merci @Francois,  
il y avait effectivement la valeur NaN dans deux attributs du formulaire. On dirait qu’en release, le socle force à 0 mais qu’en prerelease la valeur reste à NaN et génère une erreur.  
J’ai mis des contrôle dans mon code pour qu’il n’y ait plus de NaN dans ces attributs.

---

<div class="post-metadata">

**Author:** ![Francois](https://community.simplicite.io/user_avatar/community.simplicite.io/francois/32/6448_2.png) [@Francois](https://community.simplicite.io/u/Francois)\
**Post date:** [October 1, 2019, 7:52am UTC](https://community.simplicite.io/t/decimal-la-validation-d-un-formulaire-genere-une-erreur-en-prerelease-et-pas-d-erreur-en-release/1747/6 "2019-10-01T07:52:57Z")

</div>

Bonjour,

La UI n’est pas sensée mettre 0 si le champ est vide et facultatif, il restera null en base.  
J’ai testé en release et prerelease, et je ne vois pas de problème mais le point reste à mieux qualifier.

Peux tu en dire plus sur ces 2 attributs ?

- sont ils obligatoires/facultatifs, en lecture seule, invisibles… ?
- ont ils du code spécifique en back ou front ?
- d’où vient le NaN ? d’un calcul ? au moment du call ajax ?

Sans plus d’élément ont ne pourra pas reproduire donc corriger le cas échéant votre cas.

---

<div class="post-metadata">

**Author:** ![Abed](https://community.simplicite.io/user_avatar/community.simplicite.io/abed/32/310_2.png) [@Abed](https://community.simplicite.io/u/Abed)\
**Post date:** [October 1, 2019, 8:32am UTC](https://community.simplicite.io/t/decimal-la-validation-d-un-formulaire-genere-une-erreur-en-prerelease-et-pas-d-erreur-en-release/1747/7 "2019-10-01T08:32:17Z")

</div>

Bonjour @Francois,

Les deux attributs sont facultatifs, en lecture seule et visibles.  
Le NaN vient effectivement d’un calcul qui se fait dans le postValidate :

avant :

```auto
var c = this.getField("elemnFinanEvolTotBilan");
var evolTotBilan = 100*((elemnFinanTotBilanN - elemnFinanTotBilanN_1)/ Math.abs(elemnFinanTotBilanN_1));
c.setValue(evolTotBilan);	

```

Dans le cas où l’attribut elemnFinanTotBilanN\_1 est vide, cette formule génère une erreur en prerelease et pas en release.

après ajout du contrôle ci-dessous, il n’y a donc plus de calcul si l’attribut elemnFinanTotBilanN\_1 est vide, et donc plus d’erreur en prerelease) :

```auto
if (elemnFinanTotBilanN_1 != '' && elemnFinanTotBilanN_1 != 0){
  var c = this.getField("elemnFinanEvolTotBilan");
  var evolTotBilan = 100*((elemnFinanTotBilanN - elemnFinanTotBilanN_1)/ Math.abs(elemnFinanTotBilanN_1));
  c.setValue(evolTotBilan);	
} 

```

Certes, ce contrôle est nécessaire pour éviter une division par vide et générer un NaN, mais ce que je veux dire, ce que j’ai l’impression qu’en release, son absence ne pose pas de pb,

---

<div class="post-metadata">

**Author:** ![system](https://community.simplicite.io/user_avatar/community.simplicite.io/system/32/4700_2.png) [@system](https://community.simplicite.io/u/system)\
**Post date:** [March 30, 2021, 6:45pm UTC](https://community.simplicite.io/t/decimal-la-validation-d-un-formulaire-genere-une-erreur-en-prerelease-et-pas-d-erreur-en-release/1747/8 "2021-03-30T18:45:23Z")

</div>

Closed on March 30, 2021, 6:45pm UTC


