Pregunta

Tengo un formulario con (en este momento) dos campos y envío lo siguiente:

capture.id = 213
capture.description = DescriptionText

El objeto de destino 'captura' es inmutable y me gustaría proporcionar un convertidor de tipos para tomar ambos valores y llamar al constructor. Lo que parece que no puedo hacer es que se invoque TypeConverter.

Si la entrada es simplemente:

capture = foo

Entonces se llama al convertidor de tipos, pero obviamente esto no sirve de mucho, ¿hay alguna posibilidad de que un ognl delegue el resto del resto de la conversación de tipo para mí, tal vez pasar un mapa de los parámetros?

¿Alguna idea? ¿Es esto posible en struts2?

versiones: struts 2.0.14 & amp; ognl 2.6.11

EDITAR: He leído un poco sobre esto y mi próximo intento me pareció un buen plan. Mi teoría era que usar la sintaxis de Map haría que Ognl convirtiera los valores en un mapa y luego llamara a mi convertidor con ese mapa para convertirlo a mi valor.

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

No, eso no parece hacer ninguna diferencia.

¿Fue útil?

Solución 2

Parece que la respuesta es no , no puedes hacerlo con struts2.

He publicado esta pregunta en la lista de correo de struts2 y parece que no es posible que se presenten múltiples campos a un TypeConverter .

La solución alternativa sugerida es tener un objeto mutable con setters y luego tener alguna forma de método 'petify' para evitar futuros cambios.

Para mi proyecto, he implementado otro interceptor struts para implementar mi comportamiento de enlace de parámetros personalizado.

Otros consejos

La forma en que hice esto fue tener lo siguiente en el JSP:

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

En el convertidor de tipos, el parámetro de valores String [] del método convertFromString contendrá ambos valores necesarios para construir una nueva captura inmutable. Siempre que sea coherente con el orden de los campos de texto (o mejor aún, encapsúlelo en un archivo de etiqueta), puede usar los índices de la matriz de valores para obtener de manera confiable el campo apropiado del objeto de captura.

La única parte extraña de este enfoque es que el método convertToString realmente no hace nada por usted. Puede devolver la identificación o la descripción (o concatenarlas juntas), pero dado que está utilizando el atributo de valores en el JSP, no importa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top