Как проверить, была ли нажата кнопка (в файле JSP)
Я работаю над файлом JSP (не хочу использовать сервлет), у меня есть простая форма, 2 метки, 2 входа и 2 кнопки, и я хочу распечатать отправленную строку на той же странице JSP, проблема в том, что последние отправленные значения остаются напечатанными на экране, когда я пробую новые, поэтому я подумал о тесте, чтобы проверить, была ли нажата кнопка отправки, прежде чем мы перейдем на дисплей, я попробовал этот код:
<body>
<form method='post'>
<pre>
<label>Username</label> <input type="text" name="user" required/>
<label>Password</label> <input type="password" name="pwd" required />
<br>
<input type="submit" value="confirm" name ="submit" />
<input type="reset" value="clear" />
</pre>
</form>
<br>
// test if the submit button was clicked (check if value of submit is confirm)
<% String x=request.getParameter("submit")%>
<% if (x.equals("confirm")){ %>
<% if (request.getParameter("user")!="" && request.getParameter("pwd")!=""){ %>
<center>
<h4> user is : <% out.write(request.getParameter("user")); %> </h4>
<br>
<h4> password is : <% out.write(request.getParameter("pwd")); %> </h4>
</center>
<% } else { %>
<h4> inputs r empty !! </h4>
<% } %>
<% } %>
</body>
Я получаю сообщение об ошибке в строке:
<% if (x.equals("confirm")){ %>
есть идеи почему?
2 ответа
Прежде всего, прекратите открывать и закрывать теги JSP без необходимости. Его неряшливый и нечитаемый. Во-вторых, вам не хватает точки с запятой. В-третьих, вам нужно проверить, что параметр имеет значение null. Когда форма не была отправлена, параметр имеет значение null.
Это плохо:
<% String x=request.getParameter("submit")%>
<% if (x.equals("confirm")){ %>
Сделай это так:
<%
String x = request.getParameter("submit");
if(x!=null && x.equals("confirm"))
{
...
Вы также можете отменить сравнение строк. Если вы используете оператор точки для переменной, которая является нулевой, вы получите исключение нулевого указателя. Таким образом, вы можете использовать оператор точки в строковом литерале и, таким образом, избежать явной проверки на нулевое значение:
<%
String x = request.getParameter("submit");
if("confirm".equals(x))
{
...
Также, как только вы исправите это, вы столкнетесь с проблемой if (request.getParameter("user")!=""
, Вам нужно использовать .equals()
потому что в Java для String ==
, !=
не сравнивайте содержимое строки, а сравнивайте эквивалентность указателя (т.е. адреса памяти).
Этот вопрос кажется не слишком старым. Так что я могу смело добавить ответ на этот вопрос.
Обычно, когда вы хотите обработать отправленные данные формы на той же странице, вы можете использовать следующий фрагмент кода:
<%
String check_submit_form = request.getParameter("submit");
if((request.getParameter("btnLogon") == null)?false:true){
for(int i =0;i<=100;i++){
out.println("Congrts Bro . you have done a great job .");
}
}
else{
%>
<form name="form_logon" method="POST" action ="logonHome.jsp">
<input type="submit" value="Click for Finger Verification" name="btnLogon">
</form>
<%
}
%>
Код не требует пояснений. Если вы нажмете кнопку "Отправить", вы сможете обработать форму, в противном случае вы будете перенаправлены на форму. Надеюсь это поможет.