フォームを送信した後、データはサーブレットに送信され、データベースに保存されます。T 次にrequest.getRequestDispatcher("CTN/ListPage.jsp").forward(request, response);
、ListPage.jsp ページのデータを一覧表示するために a を使用しますが、同じページを更新すると、ブラウザは警告メッセージでデータが再送信されることを通知し、最後に保存されたデータが複製されます..多くの検索の後、一般的な問題のようです。そこで、以下を変更して RPG ソリューションを試します。
request.getRequestDispatcher("CTN/ListPage.jsp").forward(request, response);
に
response.sendRedirect(request.getContextPath() + "CTN/ListPage.jsp");
しかし、404 エラーが発生します...要求されたリソース () は利用できません。
どうすればこの問題を解決できますか?
更新:サーブレット コード:
package com.CTN.controller;
import com.CTN.dao.MatiereDaoLocal;
import com.CTN.dao.SeanceDaoLocal;
import com.CTN.dao.SemestreDaoLocal;
import com.CTN.model.Matiere;
import com.CTN.model.Seance;
import java.io.IOException;
import java.util.List;
import javax.ejb.EJB;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author WORK
*/
@WebServlet(name = "NewSeanceAjouterServlet", urlPatterns = {"/NewSeanceAjouterServlet"})
public class NewSeanceAjouterServlet extends HttpServlet {
@EJB
private MatiereDaoLocal MatiereDao;
@EJB
private SeanceDaoLocal SeanceDao;
@EJB
private SemestreDaoLocal SemestreDao;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int matiereId = Integer.parseInt(request.getParameter("matiereId"));
String seanceTitre = request.getParameter("seanceTitre");
String seanceContenue = request.getParameter("seanceContenue");
String seanceType = request.getParameter("seanceType");
Matiere matiere = MatiereDao.getMatiere(matiereId);
Seance nouveauSeance = new Seance();
nouveauSeance.setSeanceTitre(seanceTitre);
nouveauSeance.setSeanceContenue(seanceContenue);
nouveauSeance.setSeanceType(seanceType);
nouveauSeance.setMatiere(matiere);
nouveauSeance.setSeanceTitre(seanceTitre);
nouveauSeance.setSeanceContenue(seanceContenue);
SeanceDao.addSeance(nouveauSeance);
List<Seance> seances = SeanceDao.getAllSeanceByMatiereId(matiereId);
List<Matiere> matieres = MatiereDao.getAllMatiereBySemestreId(matiere.getSemestre().getSemestreId());
request.setAttribute("matieres", matieres);
request.setAttribute("seances", seances);
response.sendRedirect("CTN/ListPage.jsp");
}
JSP ページ:
<div class="box">
<form action="./NewSeanceAjouterServlet" method="POST">
<input id="texthidden" type="text" name="matiereId" value="${matiere.matiereId}" readonly="readonly" />
<p><span>titre</span></p>
<p>
<textarea name="seanceTitre"class="courstitre" id=""></textarea>
<br/>
</p>
<div class="ajouter" >
<textarea class="courstext" name="seanceContenue"> </textarea>
<select name="seanceType" selected="selected">
<option value="Cours">Cours</option>
<option value="Voyage d'Etude">Voyage d'Etude</option>
<option value="Devoir">Devoir</option>
<option value="Examen">Examen</option>
</select>
<input class="button" type="submit" name="action" value="AJOUTER" />
</div>
</form>
</div>