Altinn / app-frontend-react

Altinn application React frontend
BSD 3-Clause "New" or "Revised" License
18 stars 31 forks source link

Ingen valg i flervalgs-komponenter gir "" i v8/v4 istedetfor null i v7/v3 #2580

Open SimenRokaas opened 3 weeks ago

SimenRokaas commented 3 weeks ago

Description of the bug

Hei, vi får nå feil i skjema som har flervalgs-komponenter (f.eks. Checkboxes, MultipleSelect) når bruker ikke gjør noen valg. Ser at mottaket vårt antar at vi da får null i slike felt, men nå får vi istedet blank streng "". Virker som det skyldes oppgradering til v8/v4.

Er dette "by design"? Isåfall finner jeg ikke noe dokumentasjon om "breaking change".

Helt konkret har vi nå feil for elvirksomhet når folk ikke velger noe i Checkboxes-komponenten her: https://altinn.studio/repos/dsb/elvirksomhet/src/branch/master/App/ui/form/layouts/06FacilityAndEquipmentTypes.json

Feltene er nullable i xsd:

<xs:complexType name="FacilityAndEquipmentTypes">
  <xs:sequence>
    <xs:element minOccurs="0" name="FacilityTypes" type="xs:string" />
    <xs:element minOccurs="0" name="EquipmentTypes" type="xs:string" />
  </xs:sequence>
</xs:complexType>

Vi har lagt inn haste-fix i mottaket for elvirksomhet, men bare lurte på om dette er by design slik at vi må dobbeltsjekke alle steder vi håndterer slike felt i mottaket for alle skjemaer.

Steps To Reproduce

  1. Send inn skjema med flervalgskomponent uten å velge noe, se at man får null i json med v7/v3
  2. Send inn skjema med flervalgskomponent uten å velge noe, se at man får "" i json med v8/v4

Additional Information

No response

olemartinorg commented 13 hours ago

Hei! Jeg klarte ikke umiddelbart å repreodusere problemet. Har dere gjort noe i det siste som omgår dette?

Det jeg gjorde var å teste med en fersk instans i tt02. Ifølge nettverksloggen starter utvalget av datamodellen slik:

{ "FacilityAndEquipmentTypes": null }

Deretter krysser jeg av et sted og dette endrer modellen til:

{
  "FacilityAndEquipmentTypes": {
    "FacilityTypes": null,
    "EquipmentTypes": "EQUIPMENT_ELECTRICAL"
  }
}

Jeg prøvde også å sette en verdi i FacilityTypes og fjerne den igjen, men den er fortsatt null etter det. Når jeg så henter modellen direkte fra platform, får jeg dette i XML:

<FacilityAndEquipmentTypes>
  <EquipmentTypes>EQUIPMENT_ELECTRICAL</EquipmentTypes>
</FacilityAndEquipmentTypes>

Dermed gir det jo mening at verdien tolkes som null.

Jeg oppdaget nylig noe lignende med vår test-app (dokumentert her), men i vårt tilfelle hadde vi initialisert verdiene som tomme strenger, og det var faktisk en feilretting i senere versjoner av v8 som gjorde at denne verdien da dukket opp riktig (og ikke ble null).