boucle foreach : récupération et enregistrement d'une seule valeur de paramètre au lieu de plusieurs
Bonjour,
J'essaie de traduire un fichier srt constitué de morceaux de titres. chaque morceau a un numéro, un temps de début et un temps de fin.
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. Je pense que
Code:
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.
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 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