2017-10-19 32 views
0

J'ai fait un champ de texte et un bouton de soumission à mon avis dans la page d'administration, et je veux faire ainsi le texte que je soumets est montré ci-dessous ma zone de texte sur la même page.Soumettre le texte sur la même page HTML

Ceci est mon contrôleur pour se rendre à l'PageD'Administration:

@RequestMapping(value = "/adminPage", method = RequestMethod.POST) 
public String adminPage(Model model) { 

return "adminPage"; 
} 

ce que j'ai pour mon PageD'Administration:

<form th:action="@{/adminPage}" method="post"> 
    <textarea rows="4" cols="50"> 
</textarea> 
    <input type="submit" class="btn btn-lg btn-primary btn-block" 
value="Submit Text"/> 

</form> 

Je suis encore très nouveau à contrôleurs et MVC en général, et j'ai du mal à utiliser mes connaissances en Java parce que les contrôleurs ne ressemblent à aucun Java que j'ai déjà utilisé, donc toute aide serait appréciée!

+0

utilisez javascript pour cela. Vous n'avez pas besoin de soumettre quoi que ce soit au serveur car tout est côté client. –

+0

nous n'avons pas appris de javascript à l'école, je me sens perdu .. – ITGuru

+0

ouais mais javascript n'est pas la réponse s'il veut soumettre à un serveur :) ce qui est parfois le cas - s'il décide de stocker cette information et pas seulement display it –

Répondre

0

ok alors, pas de Javascript. Tout d'abord, textarea a besoin d'un attribut de nom name="inputText".

Ce nom sera utilisé dans l'objet de modèle lorsque votre méthode de serveur reçoit la requête:

@RequestMapping(value = "/adminPage", method = RequestMethod.POST) 
public String adminPage(@RequestParam("inputText") String input, Model model) { 
    //Do stuff 
    model.addAttribute("theText", input); //add the text which can be accessed on "adminPage" 
    return "adminPage"; 
} 

vous pouvez ajouter un <div> dans « adminPage.jsp » et ajoutez là votre texte, comme:

<div>${theText}</div> 
+0

Ah, une excellente solution! J'ai toujours besoin d'un identifiant pour l'entrée, String est correct, je suppose. – ITGuru

+1

ouais désolé fixé cela. Je tapais juste la main libre :) –

0

Si, j'ai bien compris votre problème, voici la solution de contournement qui fera l'affaire.

Lorsque l'utilisateur visite /adinPage du navigateur que la variable input_data sera null et que la condition if ne sera pas exécutée. La page JSP sera retournée avec la deuxième textarea comme vierge. Vous devez utiliser JSP car les pages HTML ne peuvent pas être modifiées.

Controller.java

@RequestMapping(value = "/adminPage", method = RequestMethod.POST) 
public String adminPage(@RequestParam(value = "input_data", required = false) String input_data,Model model) 
{ 
    if(input_data!=null) 
     model.addAttribute("output_data",input_data); 

    return "adminPage"; 
} 

adminPage.jsp

<form th:action="@{/adminPage}" method="post"> 

     <textarea id="input_data" rows="4" cols="50"> 
     </textarea> 

     <textarea rows="4" cols="50"> 
     ${output_data} 
     </textarea> 

     <input type="submit" class="btn btn-lg btn-primary btn-block" 
     value="Submit Text"/> 

</form> 

Lorsque l'utilisateur soumet le formulaire, la condition if sera exécutée et la vue retournée contiendra l'entrée précédemment données en deuxième textarea

Je n'ai pas testé ed le code, il peut contenir des erreurs de syntaxe.