Pergunta

Eu estou tentando obter uma ação em Struts 2 a trabalhar com um Enum como um parâmetro de entrada. O que eu fiz até agora se parece com:

public TestAction {
  public enum Module {
    VALUE1;
  }

  private Module module;

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

Mas ao tentar usar este eu recebo um erro de conversão XWork, e a ação em si nem sequer executar. Eu posso fazer este trabalho como é, ou deveria fornecer setModule (String) me?

Edit: eu estou usando struts 2.1.6 O URL que estou tentando: /test.action?module=value1

Foi útil?

Solução

Deve ligar uma string para um enum imediatamente. Eu acho que o conversor de tipo enum tem sido na configuração padrão desde que eu acho 2.1.x.

  • Qual versão do Struts 2 você está usando?

Se você não tem certeza do seguinte é na minha xwork-conversion.properties em um 2.0.14 aplicativo

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

Editar : Em resposta ao comentário, se você precisa ignorar caso de atribuição de uma enumeração você tem as seguintes opções:

  • Altere o valor de enum para actaully estar em minúsculas - não grande estilo e poderá fazer o seu código parece um pouco estranho
  • Escrever um novo conversor caso insensível tipo para java.lang.Enum (basta copiar o XWork e toupper a entrada eu acho)
  • adicionar um novo setModule (String) para este caso específico

Outras dicas

Eu apenas encontrar um problema semelhante ao encaminhar a partir de uma ação para uma ação de redirecionamento (em vez de uma ação para a frente), Struts não adequadamente reconhecer Eu estou usando um List<Enum> parâmetro e eu tive que usar um método de proxy converter de String parâmetro em um List<Enum>.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top