0

search.jspデータベース テーブル内のデータを検索するために数値を入力できる があります。見つかったデータをパラメーターとして別のデータに渡したいのですが.jsp、送信ボタンがクリックされた場合にのみ、データがテーブルまたはデータベースで見つかった場合にのみ渡します。ここに私のコードがありますが、正しく動作しません。

<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>
    }

現在、検証は実際に機能しますが、1 回だけであり、Java コードにアクセスしたり実行したりすることはありません。どうすればこの問題を解決できますか?

4

2 に答える 2

0

上記のコードの問題は、データベース値を使用してサーバーで検証を実行するためにフォームをサーバーに送信しないことです。これを修正するには、action 属性を に変更しsearch.jsp、javascript に送信を実行させる必要があります。同じページが再び読み込まれると、データベースの検証が行われ、すべて問題がなければ別のページに転送されます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>
于 2013-06-16T10:36:21.943 に答える
0

java/jsp (サーバー上で実行されている) とは何かを調べて、最初に理解する必要があると思います。javascript とは (ブラウザーで実行されている)、どのように会話できるか (シンプルでシンプルな AJAX サンプル、シンプルなフォームを探してください)。同じマシンプロセスで発生するようなJavascriptとJspコードの混同。彼らはしない。Jsp はアプリ サーバーにあり、JavaScript はブラウザにあります

search.jsp の html からページを送信する必要があります self('search.jsp')

検索フィールドが空の場合は、同じページを再度表示します (ユーザーが最初にページを要求したときに何が起こるか)。

クライアントの検証コードは JavaScript 内にある必要があります。おそらく、フィールドが空かどうかをテストします。ただし、これに依存することはできません。これはクライアントで発生し、オフにしたり操作したりできます。

サーバーでは、入力をテストした後に検索を実行し、SQL インジェクションなどを処理します。次に、別のページに移動する必要がある場合は、リダイレクトを送信します (その前に他の出力がクライアントに送信されていないことを確認する必要があります。行またはスペース)

最初に、初心者向けの本や Web の記事を読む必要があります。

于 2013-06-16T09:03:05.613 に答える