Pergunta

Eu tenho um formulário com (no momento) dois campos e enviar o seguinte:

capture.id = 213
capture.description = DescriptionText

O objeto de destino 'capturar' é imutável e eu gostaria de fornecer um conversor de tipo para levar ambos os valores e chamar o construtor. O que eu não consigo fazer é começar por TypeConverter a ser invocado.

Se a entrada é simplesmente:

capture = foo

Em seguida, o conversor de tipo é chamado, mas, obviamente, isso não é muito útil, está lá fora para fazer um OGNL delegar o resto do resto do tipo de conversa para mim, talvez passando em um mapa dos parâmetros?

Todas as idéias? É isto mesmo possível em struts2

versões: struts 2.0.14 e 2.6.11 OGNL

EDIT: Eu fiz um pouco de leitura sobre isso e minha próxima tentativa parecia-me ser um plano bom. Minha teoria era que usando a sintaxe Mapa faria OGNL converter os valores em um mapa e, em seguida, chamar o meu conversor com que mapeiam para convertê-lo para o meu valor.

capture[id] = 213
capture[description] = DescriptionText

Nope que não parece fazer qualquer diferença em tudo.

Foi útil?

Solução 2

Parece que o que a resposta é não você não pode fazer isso com struts2.

Eu postei esta pergunta na lista struts2 de discussão e parece que ele simplesmente não é possível ter vários campos de ser apresentado a um TypeConverter.

A solução alternativa sugerida é ter objeto mutável com setters e depois ter alguma forma de 'petify' método para impedir quaisquer alterações futuras.

Para o meu projeto que eu realmente implementado mais suportes Interceptor para implementar o meu comportamento de ligação do parâmetro personalizado.

Outras dicas

A maneira que eu fiz isso era ter o seguinte no JSP:

<s:textfield name="capture" value="capture.id" />
<s:textfield name="capture" value="capture.description" />

No conversor de tipo, a String [] valores parâmetro do método ConvertFromString irá conter ambos os valores necessários para construir uma nova captura imutável. Desde que você é consistente com a ordenação campo de texto (ou melhor ainda, encapsulá-lo em um arquivo de tag), você pode usar os índices do array valores de forma confiável obter o campo apropriado do objeto de captura.

A única parte estranha sobre esta abordagem é que o método ConvertToString realmente não fazer nada por você. Você pode retornar qualquer id ou descrição (ou concatenar-los juntos), mas desde que você está usando o atributo valores no JSP, não importa.

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