Domanda

Ho un modulo con (al momento) due campi e invio quanto segue:

capture.id = 213
capture.description = DescriptionText

L'oggetto di destinazione 'cattura' è immutabile e vorrei fornire un convertitore di tipi per prendere entrambi i valori e chiamare il costruttore. Quello che non riesco a fare è ottenere da TypeConverter per essere invocato.

Se l'input è semplicemente:

capture = foo

Quindi viene chiamato il convertitore di tipi, ma ovviamente questo non è molto utile, è lì per farmi delegare a ognl il resto del resto della conversazione di tipo, magari passando una Mappa dei parametri?

Qualche idea? È possibile anche in struts2

versioni: struts 2.0.14 & amp; ognl 2.6.11

EDIT: ho letto un po 'su questo e il mio prossimo tentativo mi è sembrato un buon piano. La mia teoria era che l'uso della sintassi della mappa avrebbe fatto convertire Ognl i valori in una mappa e quindi chiamare il mio convertitore con quella mappa per convertirlo nel mio valore.

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

No, sembra che non faccia alcuna differenza.

È stato utile?

Soluzione 2

Sembra che la risposta sia no non puoi farlo con struts2.

Ho pubblicato questa domanda sulla mailing list di struts2 e sembra che non sia possibile presentare più campi a un TypeConverter .

La soluzione alternativa suggerita è quella di avere un oggetto mutabile con setter e quindi avere una qualche forma di metodo "petify" per prevenire eventuali cambiamenti futuri.

Per il mio progetto ho effettivamente implementato un altro intercettore Struts per implementare il mio comportamento di associazione dei parametri personalizzato.

Altri suggerimenti

Il modo in cui l'ho fatto è stato avere quanto segue nel JSP:

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

Nel convertitore di tipi, il parametro String [] valori del metodo convertFromString conterrà entrambi i valori necessari per costruire una nuova acquisizione immutabile. Se sei coerente con l'ordinamento dei campi di testo (o meglio, incapsulalo in un file tag), puoi utilizzare gli indici dell'array dei valori per ottenere in modo affidabile il campo appropriato dell'oggetto di acquisizione.

L'unica parte strana di questo approccio è che il metodo convertToString non fa davvero nulla per te. Puoi restituire id o descrizione (o concatenarli insieme), ma poiché stai utilizzando l'attributo valori in JSP, non importa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top