2015-01-04 71 views
0

我面對的情況是,我有一個JSP表單連接到一個servlet和一個提交按鈕,我也在servlet頁面中有一個驗證過程,當一些驗證被侵犯我想回到有形式的jsp,但是當我做所有的文本字段都是空的。 我該怎麼辦? 我的意思是我怎樣才能返回到jsp頁面,並且文本字段在提交前與它們相同的值是完整的?從servlet重定向到帶有空文本字段的jsp

messages.put("Applied", "Sorry, but you already Applied"); 
     request.getRequestDispatcher("/Nurses.jsp").forward(request, response); 

請任何人都可以儘快幫助我。

回答

0

您可以使用JavaScript歷史記錄回來,僅在無效數據的情況下打印此頁面,並且頁面將在客戶端返回。

<script> 
    window.history.go(-1); 
</script> 
+0

它的工作完全謝謝你,但有沒有使用這種方式的缺點? – 2015-01-05 09:28:49

+0

當然,缺點是 - 如果你的表單不是靜態的,並且在某些用戶的事件上由javascript生成(比如'click here to open form'),form將是空的,但是總的來說,沒有更多的缺點,你只需返回用戶返回上一頁,如果您在該頁面上有一些JavaScript處理程序 - 在大多數情況下,除onLoad事件外,它們都能正常工作,但JavaScript有辦法解決此問題(http://google.com/search ?q = onLoad + javascript + history + back) – msangel 2015-01-05 19:47:35

+0

好的,非常感謝你,但是關於java腳本,反正沒有找回已經被採用的java腳本動作! 在我的表格中,用戶可以在桌子上添加一列,但是當他回去時他不會找到它,我該如何解決這個問題? – 2015-01-14 15:24:56

0

您正在向jsp頁面發送相同的請求對象。使用此請求對象再次填充所有字段。

另一種選擇是使用ajax來做你的服務器端驗證。

0

這是servlet + JSP中的常見用例。這就是爲什麼請求中有屬性的原因。

你應該在要求你的servlet店有趣的屬性值轉發之前重定向是不同的,不能在這裏使用)到JSP。

在JSP中,您只需嘗試從請求屬性中獲取值。如果它們存在,則使用它們(當從驗證錯誤轉發時),如果不存在(正常情況),您將得到空值,這些值將在JSP中顯示爲空。

(可以使用<jsp:usebean>獲得請求屬性)

0

當您使用相同的請求&響應對象,所以你會在同一個會話。

1)將所有表單參數(JSP FORM)的值存儲到Servlet中的HttpSession對象。

HttpSession session = request.getSession();

和使用session.setAttribute()方法,保存所有表格元素值

2)檢索所有字段值回JSP使用HttpSession對象在JSP

Retrieve form element value using session.getAttribute() 

由於 SP

+0

確定這很有用,但在這種情況下,我必須逐一設置和獲取值,並且我有很多字段,其中大多數可以添加,即對於一些字段用戶可以添加多達7個字段! 我該如何處理它們! – 2015-01-05 07:52:51

+0

如果感覺很多的負擔,然後只添加您intrest的領域,併爲下一個請求用戶將再次添加剩餘的字段 – 2015-01-05 20:50:40

0

由於您從servlet轉發請求到jsp,請嘗試在jsp中使用EL & taglibs,例如:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<!-- ${param.name} will give the value which was submitted --> 
<form> 
    User name: <input type="text" name="user" value="${param.user}"/> 
    <br/> 
    Gender: 
    <input type="radio" name="gender" value='m' 
    <c:if test="${'m' eq param.gender}"> checked='checked' </c:if> 
    /> Male 
    <input type="radio" name="gender" value='f' 
    <c:if test="${'f' eq param.gender}"> checked='checked' </c:if> 
    /> Female 
</form>