4

これが私が行っていることです。1 つの .jsp ファイルがあります。ただし、フォーム内に複数の入力がある 2 つのフォームがあります。

あるフォームが送信され、他のフォームが送信されなかったことを検出する最良の方法は何ですか? ここに例があります: 私はこのフォームを持っています:

<form  name = "login" action="index.jsp" method="get">
Username: <input id="username" name="username" type="text"/><br/>
Password: <input id="password" name="password" type="password"/>
<input type="submit" Value="Login" ></input>
</form>

そのボタンがクリックされたら、次のコードを実行したいと思います。

String username = request.getParameter("username");
String password = request.getParameter("password");
if((username!= null && !username.trim().equals("")) && (password != null && !username.trim().equals(""))) {
    DBentry DBentry=new DBentry();
    boolean flag = DBentry.isTaken(username);
    if(flag) {%><script type="text/javascript">alert("Login Successful!");</script><%
        }
    else { %><script type="text/javascript">alert("Unrecognized username.  Please register!");</script><% }
    }
else { %><script type="text/javascript">alert("Please enter both a username and password!");</script><% }

さらに下には、まったく同じものがありますが、別のフォームを送信します。ありがとう!

4

5 に答える 5

5

送信ボタンに一意の名前を付けます。リクエストパラメータ名になります。このようにして、HttpServletRequest#getParameter()が返されないかどうかを確認できますnull

例えば

<input type="submit" name="login" Value="Login" />

...

<input type="submit" name="somethingelse" Value="Something else" />

if (request.getParameter("login") != null) {
    // Login form submitted.
}
else if (request.getParameter("somethingelse") != null) {
    // Something else submitted.
}

具体的な問題とは関係ありませんが、ビジネス ロジックはJSP ではなくServletに属します。私もそれに取り組み始めます。これにより、フォームを異なる URL に送信できます。また、これには GET メソッドではなく POST メソッドを使用する必要があります。

于 2012-09-19T03:33:45.163 に答える
2

action="index.jsp?form=userlogin" などのアクションに別のパラメーターを渡すことができ、他のパラメーターには別のパラメーターを渡すことができます。

于 2012-09-19T03:29:42.220 に答える
1
<input type='hidden' name='formNumber' value='form2' />
于 2012-09-19T03:31:42.670 に答える
0

フォームの 1 つのフォーム フィールド変数リストに値を持つ隠し変数を追加します。JSP で、その値が入力されているかどうかを確認します。入力されている場合は最初のフォームが送信され、それ以外の場合は 2 番目のフォームが送信されます。例:

<form  name = "login" action="index.jsp" method="get">
Username: <input id="username" name="username" type="text"/><br/>
Password: <input id="password" name="password" type="password"/>
<input type= "hidden" name="myform" value="form1"/>
<input type="submit" Value="Login" ></input>
</form>
于 2012-09-19T03:32:42.427 に答える
-1

これを別の質問からコピーしました。

たとえば、JavaScriptでサーブレットメソッドを呼び出すだけです

送信ボタンで name 属性を使用するだけです

   <li class="button-row">
  <input type="submit" value="ADD" id="add"class="btn-submit img-  swap" name="add" />
    <input type="submit" value="Delete"  class="btn-delete img-swap" name="delete" />
   <input type="submit" value="Update" class="btn-update img-swap" name="update" />
 <input type="submit" value="Search" class="btn-search img-swap" name="search" />
 </li>

次のようにタグ名を送信することにより、javascriptで複数のメソッドで単一のサーブレットを呼び出すことができます

   <script type="text/javascript">
var frm = document.forms[0];

if (request.getParameter("add") != null) {

    var pageName = "/DepartmentServlet?method=add"
    frm.action = pageName;
    frm.submit();

 }
 else if (request.getParameter("delete") != null) {
//likewise you can call your other method from DepartmentServlet
//Even you can pass parameter by onClick event
// Invoke action 2.
  }
 else if (request.getParameter("update") != null) {
// Invoke action 3.  }

 </script>
于 2012-09-19T03:44:44.630 に答える