我需要從我的JSP轉到我的Servlet,然後返回到相同的JSP。問題是,當我回來時,我的所有文本字段都是空的。從JSP轉到Servlet,然後回到相同的JSP並且字段爲空
我該如何解決這個問題?備註:
- 該表格有
method='post' enctype='multipart/form-data'
。 - 我正在使用按鈕提交。他們是正常的按鈕,執行JavaScript函數onclick,這個函數驗證文本字段,如果一切正常,然後調用
submit()
函數並提交表單。 的來自servlet的背部正在使用此代碼完成的:
RequestDispatcher rd = request.getRequestDispatcher("/altaPerfil.jsp"); rd.forward(request, response);
附加信息:
我的JSP頁面類似於此:https://www.taringa.net/registro。
它有一種形式,在表單內部有7個文本字段,3個選擇日期字段(與該頁面完全相同),上傳字段上傳圖像,帶有兩個字段和3個按鈕的radioButton。
其中一個按鈕用於驗證暱稱和電子郵件字段(如果暱稱或郵件已被佔用,則返回false,否則返回true,這是在servlet中完成的,因爲我們試圖將邏輯從演示文稿中分離出來) 。
第二個按鈕用於上傳圖像。
第三個按鈕用於發送所有表單(所有文本字段和日期)。
前兩個按鈕必須去servlet和回來的JSP ...
示例代碼:
(JSP)
<form action="altaPerfilServlet"
name = "frmValidar"
method='post' enctype='multipart/form-data' >
Nick:
<br />
<input type="text" name="nick"
id="nick" onkeypress="deshabilita()"
value="${requestScope.nick}" />
<input type=button name="botonValidar"
id="botonValidar" value="Validar datos"
onclick="validarNick()" />
<!--Note: the javascript validarNick() verifies the nick field and if it is -->
<!--not empty then it calls frmValidar.submit()-->
(Servlet的)
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> fields = upload.parseRequest(request);
Iterator<FileItem> it = fields.iterator();
<!--here i process all the FileItems and obtain their values-->
<!--then i talk to a java app (which acts as a server, providing -->
<!--the data and a series of classes) and obtain a boolean value(esValido)-->
<!--that tells me if the nick is available(true) or taken(false)-->
<!--finally: -->
request.setAttribute("esValido", esValido);<!-- saving the boolean -->
String nick=request.getParameter("nick");
request.setAttribute("nick", nick);
RequestDispatcher rd = request.getRequestDispatcher("/altaPerfil.jsp");
rd.forward(request, response);
告訴我們,呈現形式JSP代碼。除非你正在設置輸入值,或者使用表單框架/庫,否則這些字段不會神奇地重新填充。 –
對不起,但我不明白你想要什麼,術語「渲染」令我感到困惑(我不太會說英語,對不起)。 如果你想要表單中的代碼,那將是不可能的,因爲它近似地是200行。 – Simpson
向我們展示一個在JSP中表單顯示的小例子。 –