[Struts 1.3.8] Checkbox dont la valeur = true alors qu'elle est décochée
Bonjour tout le monde!
Je m'arrache les cheveux sur un problème de checkbox que je n'arrive pas à comprendre.
J'ai une page avec 2 checkbox:
Code:
1 2 3 4
|
<html:checkbox property="add_product1" />Add Product 1
[
]
<html:checkbox property="add_product2" />Add Product 2 |
Dans l'ActionForm associé à mon formulaire, j'ai les champs et les getter/setter suivants:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
private boolean add_product1;
public boolean isAdd_product1() {
return this. add_product1;
}
public void setAdd_product1(boolean add_product1) {
this. add_product1 = add_product1;
}
private boolean add_product2;
public boolean isAdd_product2() {
return this. add_product2;
}
public void setAdd_product2(boolean add_product2) {
this. add_product2 = add_product2;
} |
Dans le reset() de l'ActionForm, j'initialise mes 2 booléens à false:
Code:
1 2 3 4 5 6
|
public void reset() {
[
]
add_product1 = false;
add_product2 = false;
} |
Dans mon formulaire, lorsque l'utilisateur change l'item sélectionné dans un popup menu, une action est lancée par l'intermédiaire de la fonction retrieveURL de la biblio ajax.js, qui permet de ne recharger qu'une partie de la page (tout ce qui se trouve entre de <span id="mon_id"></span>, ce qui est le cas de mes checkbox).
Le problème, c'est qu'avant même que mon action ne soit traitée, Struts mets mes 2 booléens à la valeur true, que la checkbox soit cochée ou pas. Et ça je ne comprends vraiment pas pourquoi…
En effet, j'ai mis un point d'arrêt sur les setters de mes 2 booléens et lorsque je passe en debug je vois que les setters sont appelés avec comme paramètre true, même si les checkbox ne sont pas cochées, exactement comme s'il y avait une erreur de mapping entre mon formulaire et mon ActionForm (avant même d'arriver au traitement de mon action dans ma classe Action)… Pourquoi?
Selon la FAQ Struts, si la checkbox n'est pas cochée le champ associé devrait être à null, or il est à true…
Merci d'avance pour votre aide.
PS: j'ai essayé la même chose avec des String à la place des booléens et j'obtiens la même chose…