私はこのシナリオを持っています:
添付ファイルをサーバーにアップロードする必要があります。リクエストを処理するjsp page
と があります。servlet
ファイルをアップロードする前に、重複したファイル名を確認して、ユーザーに通知せずにファイルを置き換えないようにする必要があります。したがって、私のサーブレットでは、適切なチェックを行い、arequest attribute
を true に設定forward the request to the jsp page
して、属性が true に設定されていることを確認すると、(jquery を使用して) ユーザーにダイアログを表示し、ユーザーがどのアクションを選択するかを選択します。 (両方保持、上書き、キャンセル)。
私が持っている唯一の懸念はsame request is submitted
、属性がtrueに設定された後、ページが更新されたとき、つまり、attribute remains true
更新時にダイアログが読み込まれることです。もちろん、私はこれが起こることを望んでいません。
これを回避するのに役立つものはありますか? これは私が持っているコードです。
UploadFile.java - 私のサーブレット
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
processRequest(request, response);
}
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException
{
request.setAttribute("duplicate", null);
if (!isDuplicate(file)){
// .. handle uploading
}
else
{
// if duplicate
request.setAttribute("duplicate", "true");
ServletContext context = getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher("/ticketsform.jsp");
dispatcher.forward(request, response);
}
response.sendRedirect("ticketform.jsp");
}
ticketform.jsp
<%
String isDuplicate = (String)request.getAttribute("duplicate");
if (isDuplicate != null)
{ %>
<script type="text/javascript">
duplicateFilesOption(); // call js function to display dialog
</script>
<% } %>
事前に助けてくれてありがとう:)