2013-03-06 3 views
0

Quelqu'un peut-il me faire savoir comment accéder à un modèle à partir d'un JSP.Comment actualiser/accéder au modèle à partir d'un JSP

Ceci est mon contrôleur:

@RequestMapping(value = "/systemById", method = RequestMethod.GET) 
public void getSystemById(Model model, OutputStream outputStream) throws IOException { 
    model.addAttribute("fSystemName", "Test name"); 
    name = system.getName(); 
} 

code JSP:

$('#uINewsSystemList').change(function() { 
    $.get("/application/systemById"); 
); 

<form:form id="systemForm" commandName="systemForm"> 
<tr> 
    <td valign="top"><form:input path="fSystemName" value="${fSystemName}" size="20" />&nbsp;</td>      
</tr> 

Je ne peux pas obtenir la forme pour rafraîchir une fois que je l'ai ajouté la chaîne au modèle. Des idées?

+0

Pourriez-vous expliquer ce que vous essayez de faire exactement? Votre JSP est-elle la vue associée au contrôleur? Voulez-vous mettre à jour le formulaire dynamiquement une fois que '#UINewsSystemList' a été modifié? –

+0

Oui, une fois qu'ils sélectionnent un élément dans uINewsSystemList, ils doivent modifier les valeurs dans le formulaire de manière appropriée. Et oui la JSP est la vue associée au contrôleur – maloney

Répondre

3

Lorsque vous effectuez un appel ajax en fonction de l'interaction de l'utilisateur, le flux que vous appelez n'a rien à voir avec le fichier JSP d'origine utilisé pour le rendu de la page.

Vous pouvez faire en sorte que la méthode getSystemById rende complètement la page (probablement via le formulaire submit/POST) ou vous pouvez modifier votre exemple de code pour renvoyer réellement les données nécessaires pour effectuer les modifications via JavaScript. Puisque vous avez mentionné que vous cherchez dynamique mise à jour des changements pourrait ressembler à ceci:

@RequestMapping(value = "/systemById/${id}", method = RequestMethod.GET) 
public String getSystemById(@PathVariable String id) throws IOException { 
    //lookup new system data by id 
    Model model = someService.getModelById(id); 
    return model.getName(); //you can return more than just name, but then you will need some sort of conversion to handle that data (json, xml, etc.) 
} 

Le client appel ajax devra être configuré pour avoir une fonction de succès lorsque vous utilisez les données renvoyées à mettre à jour l'interface utilisateur.

$('#uINewsSystemList').change(function() { 
    var id = $(this).val(); 
    $.get("/application/systemById/" + id, function(returnedData){ 
     //use returnedData to refresh the ui. 
     $('selectorForSystemNameField').val(returnedData); 
    }); 
); 
+0

Si votre contrôleur est déjà configuré pour attendre des chaînes comme noms de vue, vous aurez également besoin de l'annotation @ResponseBody sur la méthode getSystemById. – purgatory101

Questions connexes