Wie kann ich 2 einen ENUM-Parameter in Streben verwenden?
Frage
Ich versuche, eine Aktion in Struts 2 zu erhalten mit einem Enum als Eingabeparameter zu arbeiten. Was ich bisher getan wie folgt aussieht:
public TestAction {
public enum Module {
VALUE1;
}
private Module module;
public void setModule(Module module) {
this.module = module;
}
public Module getModule() {
return module;
}
}
Aber wenn man versucht, dies verwende ich ein xwork Konvertierungsfehler erhalten, und die Handlung selbst ausführen nicht einmal. Kann ich diese Arbeit zu machen, wie ist, oder sollte ich schaffen setModule (String) selbst?
Edit: Ich bin mit Streben 2.1.6 Die URL Ich versuche: /test.action?module=value1
Lösung
Es sollte eine Zeichenkette in eine ENUM sofort binden. Ich denke, der Aufzählungstyp-Wandler ist in der Standardkonfiguration, seit ich 2.1.x denken.
- Welche Version von Streben 2 verwenden Sie?
Wenn Sie nicht sicher sind, ist die folgende in meinem xwork-conversion.properties
in einer 2.0.14 app
java.lang.Enum = com.opensymphony.xwork2.util.EnumTypeConverter
Bearbeiten : Als Reaktion auf den Kommentar, wenn Sie benötigen Fall ignorieren für eine ENUM Zuordnung haben Sie folgende Möglichkeiten:
- Ändern Sie den Wert Enum actaully niedriger Fall sein - nicht großen Stil und könnte Ihr Code aussehen ein bisschen komisch
- Schreiben Sie einen neuen Groß- und Kleinschreibung Wandler für java.lang.Enum (kopieren Sie einfach die xwork ein und toUpper den Eingang I guess)
- fügen Sie einen neuen setModule (String) für diesen speziellen Fall
Andere Tipps
Ich begegne gerade ein ähnliches Problem, wenn sie von einer Aktion zu einer Umleitung Aktion (anstelle einer Handlung vorwärts) weiterzuleiten, Struts nicht richtig erkennen ich einen Parameter List<Enum>
bin mit und ich hatte eine Proxy-Methode zu verwenden, aus dem String zu konvertieren Parameter in eine List<Enum>
.