Как использовать параметр enum в стойках 2? - PullRequest
6 голосов
/ 26 октября 2009

Я пытаюсь заставить действие в Struts 2 работать с Enum в качестве входного параметра. То, что я сделал до сих пор, выглядит так:

public TestAction {
  public enum Module {
    VALUE1;
  }

  private Module module;

  public void setModule(Module module) {
    this.module = module;
  }
  public Module getModule() {
    return module;
  }
}

Но при попытке использовать это я получаю ошибку преобразования xwork, а само действие даже не выполняется. Могу ли я сделать эту работу как есть или я должен предоставить setModule (String) сам?

Редактировать: я использую распорки 2.1.6 URL, который я пытаюсь: /test.action?module=value1

Ответы [ 2 ]

5 голосов
/ 26 октября 2009

Он должен связать строку с перечислением сразу. Я думаю, что преобразователь типа enum был в конфигурации по умолчанию, так как я думаю, что 2.1.x.

  • Какую версию распорок 2 вы используете?

если вы не уверены, в моем xwork-conversion.properties приложении 2.0.14

указано следующее
java.lang.Enum = com.opensymphony.xwork2.util.EnumTypeConverter

РЕДАКТИРОВАТЬ : В ответ на комментарий, если вам нужно игнорировать регистр для присвоения перечисления, у вас есть следующие варианты:

  • Измените значение enum на строчные буквы - не очень хороший стиль и может сделать ваш код немного странным
  • Напишите новый нечувствительный к регистру преобразователь типов для java.lang.Enum (просто скопируйте xwork и toUpper ввода, я думаю)
  • добавить новый setModule (String) для этого конкретного случая
0 голосов
/ 07 апреля 2016

Я просто сталкиваюсь с подобной проблемой при перенаправлении из действия в действие перенаправления (вместо действия переадресации), Struts не будет правильно распознавать, что я использую параметр List<Enum>, и мне пришлось использовать прокси-метод для преобразования из параметр String в List<Enum>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...