2013-06-16 3 views
0

У меня есть search.jsp, в котором я могу ввести число, чтобы найти данные в таблице базы данных. Я хочу передать найденные данные как параметры другому .jsp, но ТОЛЬКО, если нажата кнопка отправки и ТОЛЬКО, если данные были найдены в таблице или базе данных. Вот мой код, но он работает неправильно.JSP abort submit button if

<script> 
    var validation = new Boolean(); 

    function valid() { 
     if(validation == false) 
      return false; 
     else { 
      return true; 
     } 
    } 
</script> 

<form action="change.jsp" onsubmit="return valid();" > 
    <br> <input type="text" name="searchAlbumNo"> AlbumNo </input> 
    <br> <input type="submit" value="Search" name="clicked"> <br> 
</form> 

if(request.getParameter("clicked") == null || !(request.getParameter("clicked").equals("Search"))) { 
    System.out.println(request.getParameter("clicked")); 
      %< <script> validation = false </script> <% 
    } else { 
     //... java code 
     //... and if data found 
     <script> validation = true </script> 
    } 

Теперь действительность проверки действительно работает, но только один раз, и код Java никогда не выполняется или не выполняется. Как я могу решить эту проблему?

ответ

0

Я думаю, вам нужно изучить и сначала понять, что такое java/jsp (работает на сервере); что такое javascript (работает в вашем браузере), как они могут говорить (ищите простой простой образец AJAX, простую форму). Вы смешиваете Javascript и Jsp-код, как в одном машинном процессе. Они не. Jsp в сервере приложений и JavaScript в браузере

Вы должны представить страницу из HTML в search.jsp вернуться к нему самостоятельно («») search.jsp

Если поле поиска пусто, то шоу на той же странице (что происходит, когда пользователь сначала запрашивает страницу).

Код проверки клиента должен находиться внутри javascript - возможно, проверьте, пустое поле. Но вы не можете полагаться на это - это происходит на клиенте, его можно отключить или манипулировать.

На сервере выполняется поиск после тестирования ввода/обслуживания SQL-инъекций и т. Д. Затем, если вам нужно перейти на другую страницу, выполните перенаправление отправки (необходимо удостовериться, что другой выход, отправленный клиенту до этого - даже не новая линия или пространство)

Вы должны сначала пройти через книгу начинающих и веб-статьи.

+0

Благодарим tgkprog за ваш быстрый ответ. Я посмотрю, как это работает, но на этот раз я выбросил весь код javascript, так как у меня возникла идея не смешивать эти разные рабочие языки таким образом. Есть ли способ передачи параметров с помощью sendRedirect()? –

+0

вы можете использовать сеанс. Посмотрите «javaEE httpsession» на google – tgkprog

+0

Надеюсь, вы уже видели хорошие учебники по jsp + java скрипту. что также поможет сделать несколько судебных процессов - в том же духе приходят разные стратегии и пользовательский интерфейс. – tgkprog

0

Проблема с приведенным выше кодом не передает форму серверу для проверки на сервере значений базы данных. Чтобы исправить это, вы должны изменить атрибут действия на search.jsp и дать javascript выполнить submit. Когда одна и та же страница загружается снова, вы выполняете проверку базы данных, и если все в порядке, просто перейдите на другую страницу change.jsp.

} else { 
    //... java code 
    //... and if data found 
    <jsp:forward page="change.jsp"/> 
} 

Чтобы выполнить проверку на стороне клиента с помощью javascript, вы должны немного изменить функцию.

<script> 
    function valid(form) { 
    if (trim(form.searchAlbumNo.value).length == 0) { 
     alert('Please enter a searchAlbumNo'); 
     form.searchAlbumNo.focus(); 
     form.searchAlbumNo.select(); 
     return false; 
    } else { 
     return true; 
    } 
    } 
</script> 

Это предотвращает отправку пустого поля.

<form action="search.jsp" onsubmit="return valid(this);" > 
    <br> <input type="text" name="searchAlbumNo"> AlbumNo </input> 
    <br> <input type="submit" value="Search" name="clicked"> <br> 
</form> 
+0

Хорошо, я понимаю, спасибо за ваш ответ. Но я избавился от всего кода скрипта внутри этого java-кода. –

+0

Я поместил проверку javascript только потому, что вы попробовали это в своем коде, это также известно как проверка на стороне клиента. Проверка на стороне клиента всегда перед проверкой на стороне сервера. Вы можете использовать оба варианта, чтобы лучше обрабатывать запрос. –