Problème avec formulaire d'édition
Bonjour, je voudrais réaliser un formulaire pré-rempli avec les données extraites d'une base via Hibernate. Je liste d'abord les données extraites de la base, ça ça fonctionne :
liste.jsp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <s:iterator value="courriers">
<tr>
<s:form action="edit.do" method="post">
<td class='std'><s:property value="id" />
<td class='std' width="30"><input type="image" src="icones/mail_generic2.png" /></td>
<td class='std'><s:property value="datetime" /></td>
<td class='std'><s:property value="expediteur" /></td>
<td class='std'><s:property value="objet" /></td>
<td class='std'><s:property value="destinataire" /></td>
<td class='std'><s:property value="transmetteur" /></td>
<td class='std'><a href="del.do?id=<s:property value="id" />"><img src="icones/supprimer_16.png" /></a></td>
</s:form>
</tr>
</s:iterator> |
action correspondante : (list.do)
Code:
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
| public String getList()
{
HttpServletRequest request = ServletActionContext.getRequest();
Transaction tx = null;
Session session = HibernateUtil.getSession();
try
{
String hql = "from Courrier";
if(request.getParameter("order") != null && request.getParameter("type") != null)
{
hql += " order by " + request.getParameter("type") + " " + request.getParameter("order");
}
this.setCourriers(session.createQuery(hql).list());
//httpSession.setAttribute("colist", colist);
return SUCCESS;
}
catch(HibernateException e)
{
addActionError(e.getMessage());
return ERROR;
}
finally
{
session.close();
}
} |
struts.xml :
Code:
1 2 3 4 5 6 7 8
| <action name="list" class="com.menehould.courrier.action.CourrierAction" method="getList">
<result>liste.jsp</result>
<result name="error">error.jsp</result>
</action>
<action name="edit">
<result type="dispatcher">edit.jsp</result>
</action> |
edit.jsp :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <tr>
<td class='std'>
<input type=text name='arc_date' id='arc_date' size=9 value="<s:property value='datetime' />">
<a href="javascript:NewCal('arc_date','yyyymmdd');"><img src="icones/agenda.png" border=0 alt='Calendrier' align=absmiddle ></a>
</td>
<td class='std' width=100>
<input type=text name='arc_expe' size=20 value="<s:property value='expediteur' />">
</td>
<td class='std' width=100>
<input type=text name='arc_objet' size=30 value="<s:property value='objet' />">
</td>
<td class='std' align=center>
<input type=text name='arc_dest' size=8 value="<s:property value='destinataire' />">
</td>
<td class='std'>
<input type=text name="arc_trans" size=8 width=20 value="<s:property value='transmetteur' />">
</td>
<td class='std'>
<INPUT type=image src="icones/filesave.png">
<a href="CourrierController"><img src="icones/undo.png" /></a>
</td>
<input type="hidden" name="id" value="<s:property value='id' />">
</tr> |
Le problème se situe là, les propriétés ne sont pas transmises de liste.jsp à edit.jsp, ce qui je pense doit venir d'une erreur de compréhension de ma part. Faut il que je passe par une classe d'action pour faire une nouvelle requête dans la base à partir d'un id passé en paramètre, re-instancier un bean avec le résultat de la requête et le transmettre à edit.jsp ? Je trouve cette méthode un peu lourde, il doit y avoir plus simple ?