Il existe un bouton radio dont le choix change en fonction du paramètre. Lorsque je sélectionne et publie un élément, ** "j_idt39: Erreur de validation: la valeur n'est pas valide" ** se produit. Cela ne se produit pas dans un environnement d'instance locale ou unique.
Les exigences du projet n'utilisaient pas de sessions persistantes et étaient attribuées de manière aléatoire au serveur pour chaque communication. En conséquence, le bean a été dupliqué dans la session et il y avait une liste de choix de boutons radio sans valeur initiale (null). Malheureusement, lorsque j'ai posté, j'obtenais une erreur de validation lorsque la liste atteignait un bean nul.
XHTML
<form jsf:id="form" jsf:prependId="false">
<h:selectOneRadio name="choiceName" value="#{choiceBean.choiceName}" styleClass="radio_list">
<f:selectItems value="#{choiceBean.choiceList}" var="prize" itemLabel="#{item.labelName}" itemValue="#{item}" />
</h:selectOneRadio>
<button jsf:action="#{pageControlBean.toConfirm()}" class="btn_orange">
prochain
</button>
<span jsfc="h:messages" class="form_error_text" />
</form>
Bean
@Named
@SessionScoped
public class ChoiceBean implements Serializable {
private static final long serialVersionUID = 1L;
@NotNull
@Getter @Setter
private ChoiceType choiceName;
@Getter @Setter
private List<ChoiceType> choiceList;
}
Enum
public enum ChoiceType {
TYPE1("Type 1", 0),
TYPE2("Type 2", 1),
TYPE3("Type 3", 2);
@Getter
private final String labelName;
@Getter
private final int index;
private ChoiceType(String labelName, int index) {
this.labelName = labelName;
this.index = index;
}
}
Définissez la valeur initiale dans le constructeur.
Bean
@Named
@SessionScoped
public class ChoiceBean implements Serializable {
private static final long serialVersionUID = 1L;
@NotNull
@Getter
@Setter
private PrizeType choiceName;
@Getter
@Setter
private List<ChoiceType> choiceList;
/**
* Constructor
*Réglage de la valeur initiale de la variable NotNull
*/
public ChoiceBean() {
choiceList = new ArrayList<>();
choiceList.add(ChoiceType.TYPE1);
choiceList.add(ChoiceType.TYPE2);
choiceList.add(ChoiceType.TYPE3);
}
}
Enfin, j'ai enquêté avec un IDE (comme la version payante d'Intellij) où le contenu de la session peut être vu, et j'ai trouvé une copie du bean. Il semble que vous puissiez le voir dans NetBeans avec JavaEE.
Recommended Posts