JSP - 初学者问题,在页面加载时绕过if..statement?

时间:2010-03-15 16:25:06

标签: jsp

我是JSP的新手,我在使用以下代码时遇到了一些问题:

    <%@ page contentType="text/html;charset=Big5" %>
<html>
    <head>
    <title></title>
    </head>
    <body>
        <form method="post" action="InsertStudent.jsp">
    <input type="text" size="20" name="txtName" />
    <input type="text" size="20" name="txtDob" />
    <input type="text" size="20" name="txtProStudied" />
    <input type="submit" name="B1" value="Submit" />     
        </form>

<% 
  if (request.getParameter("txtName") !="" && request.getParameter("txtDob") != "" && request.getParameter("txtProStudied") != "" ) {
              out.println("...bypass the if....statement");               
  }
%>

    </body>
</html>

如果运行此代码,out.println将触发甚至3输入框都有值..

2 个答案:

答案 0 :(得分:3)

因为request.getParameter返回一个字符串,所以不能使用!=运算符。您必须使用相同的功能。 request.getParameter的返回值也可能为null。你也需要检查一下。

if (request.getParameter("txtName") != null && !"".equals(request.getParameter("txtName")) 
 && request.getParameter("txtDob") != null && !"".equals(request.getParameter("txtDob")) 
 && request.getParameter("txtProStudied") != null && !"".equals(request.getParameter("txtProStudied"))) {
    out.println("...bypass the if....statement");               
}

定义一个函数来测试返回值是空字符串还是null来减少代码是理想的。

public boolean isEmpty(String s)
{
    return (null == s || "".equals(s.trim()))
}

答案 1 :(得分:0)

也许试试:

if (request.getParameter("txtName").equals("")) { }

或.compareTo()或.compareToIgnoreCase()