4

这就是我正在做的事情。我有一个 .jsp 文件。但是,我有两个表单,这些表单中有多个输入。

检测一个表单已提交但另一个表单未提交的最佳方法是什么?这是一个例子:我有这个表格:

<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

给提交按钮一个唯一的名称。它成为请求参数名称。这样你就可以检查 if HttpServletRequest#getParameter()doesn't return 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。此外,您应该为此使用 POST 方法,而不是 GET 方法。

于 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

您在其中一个表单的表单字段变量列表中添加一个具有某些值的隐藏变量。在 JSP 中,检查该值是否已填充。如果填充表示 ,则提交第一个表单,否则提交第二个表单。例如:

<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 调用您的 servlet 方法

在提交按钮中,我只使用名称属性

   <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中调用具有多种方法的单个servlet,如下所示

   <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 回答