Bonjour,

Mon problème est le suivant (je pense, niveau moyen à expert):

J'ai un formulaire JSTL/JSP qui contient, entre autres, les champs suivants:

Le modèle contient un objet "of", lequel vient en fait d'un mapping Hibernate. Ainsi que les objets collection Ts et Ps, qui sont des collections d'objets (respectivement T et P) aussi persistants.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
		<tr>
			<td>Objet T</td>
			<td>
			<select name="FT">
			<option></option>
			<c:forEach var="ct" items="${Ts}">
				<c:choose>
				<c:when test="${ct.id == of.id}">
					<option value="${ct}" selected="selected"> <c:out value="${ct.label}" /></option>
				</c:when>
				<c:otherwise>
					<option value="${ct}"> <c:out value="${ct.label}" /></option>
				</c:otherwise>
				</c:choose>
			</c:forEach>
			</select>
			</td>
		</tr>
		<tr>
			<td>Objet P:</td>
			<td>
			<select name="FP">
			<option></option>
			<c:forEach var="cp" items="${Ps}">
				<c:choose>
				<c:when test="${cp.pid == of.pid}">
					<option value="${cp}" selected="selected"><c:out value="${cp.id}" /> : <c:out value="${cp.label}" /></option>
				</c:when>
				<c:otherwise>
					<option value="${cp}"><c:out value="${cp.id}" /> : <c:out value="${cp.label}" /></option>
				</c:otherwise>
				</c:choose>
			</c:forEach>
			</select>
			</td>
			<td></td>
			<td></td>
		</tr>
Plus précisément, cela met le resource handler java en tant que value dans les choix de la combobox (ce qui sera donc renvoyé lors du submit).

Ma question consiste de savoir comment, alors que j'ai le resource handler en tant que value, je peux en récupérer l'objet dans le code des servlets Contrôleurs. Le validateur ne laisse pas passer, et me renvoie comme problème qu'il ne sait pas convertir un String (qui est en fait un resource handler, mais passons) en objet T ou P. Question: Comment dire à Spring qu'il s'agit d'un resource handler? Comment configurer les editors pour permettre cette conversion?

Je connais déjà une autre solution qui est de créer un FormBackingObject sur mesure, puis de faire la conversion à la main dans le contrôleur ou le service, mais ce ne serait pas très Spring, n'est-ce pas?

L'idée de base étant bien sûr de réutiliser la classe persistante en tant que FormBackingObject afin d'avoir directement l'objet à enregistrer/mettre à jour en allégeant les traitements de la couche métier.