[JAVA] Überprüfungswertfehler, der in der Clusterumgebung aufgetreten ist

In der Clusterumgebung tritt ein Validierungsfehler auf

Entwicklungsumgebung

Veranstaltung

Es gibt ein Optionsfeld, dessen Auswahl sich je nach Parameter ändert. Wenn ich einen Artikel auswähle und poste, tritt ** "j_idt39: Validierungsfehler: Wert ist ungültig" ** auf. Es tritt nicht in einer lokalen oder Einzelinstanzumgebung auf.

Ursache

Die Projektanforderungen verwendeten keine Sticky Sessions und wurden dem Server für jede Kommunikation zufällig zugewiesen. Infolgedessen wurden die Beans in der Sitzung dupliziert, und es gab eine Liste mit Optionsfeldern ohne Anfangswert (null). Leider wurde beim Posten ein Validierungsfehler angezeigt, als die Liste eine Null-Bean erreichte.

Problemquelle

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">
Nächster
        </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("Typ 1", 0),
	TYPE2("Typ 2", 1),
	TYPE3("Typ 3", 2);

	@Getter
	private final String labelName;

	@Getter
	private final int index;

	private ChoiceType(String labelName, int index) {
		this.labelName = labelName;
		this.index = index;
	}
}

Lösung

Legen Sie den Anfangswert im Konstruktor fest.

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
	 *Anfangswerteinstellung der NotNull-Variablen
	 */
	public ChoiceBean() {
		choiceList = new ArrayList<>();
		choiceList.add(ChoiceType.TYPE1);
		choiceList.add(ChoiceType.TYPE2);
		choiceList.add(ChoiceType.TYPE3);
	}
}

Forschungstipps

Schließlich untersuchte ich mit einer IDE (wie der kostenpflichtigen Version von Intellij), wo der Inhalt der Sitzung angezeigt werden kann, und fand eine Kopie der Bean. Es scheint, dass Sie es in NetBeans mit JavaEE sehen können.

Recommended Posts

Überprüfungswertfehler, der in der Clusterumgebung aufgetreten ist
Ein Fehlermemorandum, das beim Erstellen einer CI / CD-Umgebung aufgetreten ist [Rails + CircleCI + Capistrano + AWS]
Beheben Sie den CreateProcess-Fehler = 206, wenn Sie Java in einer Windows-Umgebung ausführen
[Docker] Eine Geschichte über einen Fehler beim Erstellen von Docker
[Rails] Fehler, der bei der automatischen Bereitstellung durch Capistrano aufgetreten ist (schwerwiegend: kein gültiger Objektname: master)
Die Geschichte, dass Tomcat in Eclipse unter einem Timeout-Fehler litt
Es wurde ein Fehler behoben, der beim Versuch auftrat, Spark in einer Umgebung zu verwenden, in der Java 8 und Java 11 gleichzeitig vorhanden sind
[Schienen] Über den Fehler, dass das Bild nicht in der Produktionsumgebung angezeigt wird
Beispielprogramm, das den Hashwert einer Datei in Java zurückgibt
Erstellen einer Lambda-Entwicklungsumgebung mit Eclipse
Erstellen eines Servlets in der Liberty-Umgebung
Erstellen Sie einen Thread-Dump in einer JRE-Umgebung
Da bei einer Anfrage über ELB ein CSRF-Gegenmaßnahmenfehler aufgetreten ist, bis zum Debuggen und Auflösen
(Capistrano) Nach der Bereitstellung wird ein Fehler in der Produktionsumgebung angezeigt.
Definieren Sie im Argument Person.java eine neue Kaufmethode, die einen Fahrzeugtypwert erhält.
Eine Bat-Datei, die Java in Windows verwendet
500 Interner Serverfehler tritt in der Rails-Produktionsumgebung auf
Eine Geschichte über einen Fehler während der Migration in Docker PHP Laravel
Umgang mit Selenium :: WebDriver :: Error :: UnknownError, der in einer Dokcer-Umgebung usw. auftritt.