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

War es hilfreich?

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>.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top