Вопрос

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

public TestAction {
  public enum Module {
    VALUE1;
  }

  private Module module;

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

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

Редактировать:Я использую struts 2.1.6 URL-адрес, который я пытаюсь:/test.action?модуль=значение1

Это было полезно?

Решение

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

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

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

java.lang.Enum = com.opensymphony.xwork2.util.EnumTypeConverter

Редактировать:В ответ на комментарий, если вам нужно игнорировать регистр для назначения перечисления, у вас есть следующие варианты:

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top