我有這種情況:在重新提交相同請求時將請求屬性設置爲空
我需要將附件上載到服務器。我有一個jsp page
和servlet
它處理我的請求。在我上傳文件之前,我需要檢查重複的文件名,以便在不通知用戶的情況下替換文件。因此,在我的servlet中,我正在執行相應的檢查並將request attribute
設置爲true,以便當我forward the request to the jsp page
並查看該屬性設置爲true時,我會向用戶顯示一個對話框(使用jquery),以便用戶選擇要採取的行動(保持兩者,覆蓋,取消)。
我唯一擔心的是,當頁面刷新時,即same request is submitted
,屬性設置爲true後,attribute remains true
,因此刷新我得到我的對話框加載。當然,我不希望這發生。
有什麼可以幫助我解決這個問題嗎?這是我的代碼。
UploadFile.java - 我的servlet
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>
<% } %>
感謝提前任何幫助:)
isDuplicate正在返回良好結果。複製時爲true,否則爲false。在頁面刷新時,如果最後一個請求是重複文件,它仍然是真的。 – Bernice
你可以把一些隱藏的字段,可以dynamiclly更改通過javascript/jquery isDuplicate。 –
設置緩存標題(請參閱melt321),但我會將文件名的Ajax文章發送到servlet進行驗證,然後完整的文章應該可以做到這一點。 –