Как проверить, была ли нажата кнопка (в файле 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>
  <%
   }
  %>

Код не требует пояснений. Если вы нажмете кнопку "Отправить", вы сможете обработать форму, в противном случае вы будете перенаправлены на форму. Надеюсь это поможет.

Другие вопросы по тегам