[JAVA] Erreur de valeur de vérification survenue dans l'environnement de clustering

Une erreur de validation se produit dans l'environnement de clustering

Environnement de développement

un événement

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.

Cause

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.

Source du problème

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;
	}
}

Solution

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);
	}
}

Conseils de recherche

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

Erreur de valeur de vérification survenue dans l'environnement de clustering
Un mémorandum d'erreur survenu lors de la création d'un environnement CI / CD [Rails + CircleCI + Capistrano + AWS]
Résoudre l'erreur CreateProcess = 206 lors de l'exécution de Java dans un environnement Windows
[Docker] Une histoire sur une erreur dans la composition de docker
[Rails] Erreur survenue lors du déploiement automatique par Capistrano (fatal: nom d'objet non valide: maître)
L'histoire que Tomcat a souffert d'une erreur de timeout dans Eclipse
Résolution d'une erreur survenue lors de la tentative d'utilisation de Spark dans un environnement où Java 8 et Java 11 coexistent
[Rails] À propos de l'erreur selon laquelle l'image n'est pas affichée dans l'environnement de production
Exemple de programme qui renvoie la valeur de hachage d'un fichier en Java
Création d'un environnement de développement Lambda avec Eclipse
Création d'un servlet dans l'environnement Liberty
Effectuer un vidage de thread dans un environnement JRE
Puisqu'une erreur de contre-mesure CSRF s'est produite dans une demande via ELB, jusqu'au débogage et à la résolution
(Capistrano) Après le déploiement, j'obtiens une erreur Désolé ... dans l'environnement de production.
Définissez une nouvelle méthode d'achat qui reçoit une valeur de type Véhicule dans l'argument Person.java.
Un fichier bat qui utilise Java dans Windows
Une erreur de serveur interne 500 se produit dans l'environnement de production Rails
Une histoire sur une erreur lors de la migration dans docker PHP Laravel
Comment gérer Selenium :: WebDriver :: Error :: UnknownError qui se produit dans l'environnement Dokcer, etc.