IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Boucle foreach ne fonctionne que pour le premier champ de texte et pas pour les autres champs.


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    étudiant
    Inscrit en
    Avril 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 6
    Points : 16
    Points
    16
    Par défaut Boucle foreach ne fonctionne que pour le premier champ de texte et pas pour les autres champs.
    Bonjour,

    J'essaie de traduire un fichier srt constitué de morceaux de titres. chaque morceau a un numéro, un temps de début, un temps de fin et du texte dans la langue originale.
    Voici ci-dessous une jsp qui me permet d'afficher le texte à traduire avec un champ texte à coté de chaque texte original. Le champ texte servira à traduire chaque ligne de texte.
    Mon problème est que je n'enregistre dans la base qu'une seule ligne et c'est toujours la première ligne de texte.

    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
     
    <body>
    	<h3>Enregistrer un morceau</h3>
    	 <form method="post" action="subEditor">  
    	 	<input type="hidden" name="action" value="create"/>  
            <input type="submit" style="position:fixed;top: 10px; right: 10px;" value="enregistrer" />
    	    <table>
    			<c:forEach var="entry" items="${map}" varStatus="status" >
    				 <c:forEach var="value" items="${entry.value}" varStatus="vs">
    				 	 <tr>
    				 		<input type="hidden" id="entry${status.index}value${vs.index}" name="numeroMorceau" value="${entry.key}"/>
    				 		<td><label for="key" id="entry${status.index}value${vs.index}" name="numeroMorceau"><c:out value="${ entry.key}" /></label></td>
    				 		<input type="hidden" id="entry${status.index}value${vs.index}" name="valueMap" value="${value}"/>
    	        			<td style="text-align:right;"><label for="value" id="entry${status.index}value${vs.index}" name="valueMap"><c:out value="${value}"/></label></td>
    	        			<td><input type="text" name="texte" id="entry${status.index}value${vs.index}" value="${param['texte']}" size="35" /></td>
    	        		</tr>
    				</c:forEach>
    			</c:forEach>
    	    </table>
        </form>
    </body>
    </html>
    voici le code la servlet : la map me permet d'extraire la paire numéro de morceau et texte original pour lesquels j'ai utilisé dans la jsp des champs hidden pour pouvoir les récupérer.

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    @WebServlet("/subEditorMorceau")
    public class SubEditorMorceau extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    	private Dao<MorceauBis> daoMorceau;
     
    	@Resource(name="MorceauDataSource")
    	private DataSource dataSource;
     
     
        public void init(){
        	DaoFactory daoFactory = new DaoFactory(dataSource);
        	this.daoMorceau = daoFactory.getMorceauImpl();
        }
    	private static final String FILE_NAME = "/WEB-INF/password_presentation2.srt";
     
    	protected void doGet(HttpServletRequest request,
    			HttpServletResponse response) throws ServletException, IOException {
    		ServletContext context = getServletContext();
    		HttpSession session = request.getSession();
     
    		SubtitlesHandler subtitles = new SubtitlesHandler(
    				context.getRealPath(FILE_NAME));
     
    		Map<String, ArrayList<String>> map = subtitles
    				.construireMapcleListeValeurs(context.getRealPath(FILE_NAME));
     
    		session.setAttribute("map", map);
    		session.getAttribute("map");
     
    		getServletContext().getRequestDispatcher("/WEB-INF/saveSubtitlor.jsp")
    				.forward(request, response);
    	}
     
    	protected void doPost(HttpServletRequest request,
    			HttpServletResponse response) throws ServletException, IOException {
    		request.setCharacterEncoding("UTF-8");
    		switch (Objects.toString(request.getParameter("action"), "")) {
    		case "delete":
    			doDelete(request, response);
    			break;
     
    		default:
    		case "create":
    			doPut(request, response);
    			break;
    		}
    	}
     
    	protected void doPut(HttpServletRequest request,
    			HttpServletResponse response) throws ServletException, IOException {
    		MorceauBis morceau = new MorceauBis();
    		morceau.setNumero_morceau(Integer.parseInt(request.getParameter("numeroMorceau")));
    		morceau.setTexte_originale(request.getParameter("valueMap"));
    		morceau.setTexte_traduit(request.getParameter("texte"));
    		try {
    			daoMorceau.ajouter(morceau);
    			response.sendRedirect("subEditor");
    		} catch (SQLException e) {
     
    			e.printStackTrace();
    		}
    	}
    }
    Merci d'avance pour toute aide ou suggestion.

    Avatar 71

  2. #2
    Membre à l'essai
    Homme Profil pro
    étudiant
    Inscrit en
    Avril 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 6
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    J'ai finalement trouvé la solution. En effet, il faut utiliser un tableau de String pour récupérer les différentes valeurs de la boucle foreach. Donc, j'ai utlisé la fonction request.getParameterValues. et tout fonctionne.
    Voici les modifications du code ma servlet :

    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
     
    protected void doPut(HttpServletRequest request,
    			HttpServletResponse response) throws ServletException, IOException {
    		String [] numero_morceau = request.getParameterValues("numeroMorceau");
    		String [] texte_originale = request.getParameterValues("valueMap");
    		String [] texte_traduit = request.getParameterValues("texte");
     
    		for(int i=0;i<numero_morceau.length;i++){
    			MorceauBis morceau = new MorceauBis();
    			morceau.setNumero_morceau(Integer.parseInt(numero_morceau[i]));
    			morceau.setTexte_originale(texte_originale[i]);
    			morceau.setTexte_traduit(texte_traduit[i]);
    			try {
    				daoMorceau.ajouter(morceau);
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    J'espère que ma solution aidera d'autres développeurs débutants comme moi.

    Avatar 71

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/06/2016, 17h54
  2. Selectionner des enregistrements avec une seule valeur
    Par ecarbill dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 15/01/2014, 23h47
  3. [AC-2010] Ouvrir un formulaire avec les enregistrements d'une seule valeur
    Par philenull dans le forum VBA Access
    Réponses: 18
    Dernier message: 13/09/2013, 08h31
  4. Réponses: 4
    Dernier message: 29/01/2009, 14h33
  5. Pourquoi une seule valeur de retour pour les fonctions ?
    Par Bruno75 dans le forum Langages de programmation
    Réponses: 33
    Dernier message: 18/01/2004, 13h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo