2012-09-14 11 views
6

Sono nuovo di Spring Framework e ho creato un controller con il metodoPrimavera del modulo mapping al controller

@RequestMapping("/fetch/{contactId}") 
public String getContact(@PathVariable("contactId") Long contactId, 
     Map<String, Object> map, HttpServletRequest request, 
     HttpServletResponse response) { 

    Contact contact = contactService.get(contactId); 
    map.put("contact", contact); 
    return "contact"; 
} 

Questo metodo recuperare viene chiamato per recuperare i dati di contatto quando l'utente fa clic sul collegamento su una jsp

<td><a href="fetch/${contact.id}" class="edit">Edit</a></td> 

quindi restituisce con successo l'oggetto contatto e visualizza sullo schermo per l'utente di modificare e salvare. Il tag sotto forma di mia jsp è come questo

<form:form method="post" action="add.html" commandName="contact" 
     id="contact" onsubmit="return validateContact(this)"> 

Ora il problema è quando provo a inviare la pagina a un altro metodo nella stessa centralina le modifiche URL per

/frontend/app/contatti/recuperare/add.html

mentre dovrebbe essere

/myapp/app/contacts/add.html

So che c'è qualcosa che non sto facendo correttamente, ma che cosa esattamente non sono in grado di capire. Apprezzare se qualcuno di voi potrebbe aiutarmi a risolvere il problema

Grazie AA

risposta

0

Usa /contacts/add.html in action attributo
Change

<form:form method="post" action="add.html" commandName="contact" 
     id="contact" onsubmit="return validateContact(this)"> 

a

<form:form method="post" action="/contacts/add.html" commandName="contact" 
     id="contact" onsubmit="return validateContact(this)"> 
7

Usa

In generale, è consigliabile utilizzare c:url in ogni applicazione interna anziché utilizzare direttamente l'URL in un tag <a>.

+0

perché è consigliato? – NimChimpsky

+0

@NimChimpsky c: url ha una riscrittura interna dell'URL, ad esempio per la chiave di visione (se i cookie non sono enalbed/supportati). Ma anche alcune altre librerie incidono su questa riscrittura (penso che anche il filtro CSRF di tomcat lo usi). Un altro motivo è che ha incluso la codifica url per le proprietà. – Ralph

+0

Tomcats: Descrizione filtro CSRF: http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CSRF_Prevention_Filter – Ralph

0
<form:form method="post" servletRelativeAction="/contacts/add" commandName="contact" 
     id="contact" onsubmit="return validateContact(this)"> 

Utilizzare l'attributo servletRelativeAction per associare all'azione del controller desiderata. Presumo che il controller desiderato sia mappato come '/ contacts/add', non 'add.html'. Vuoi colpire il controller e non la vista.

Problemi correlati