我正在处理JSP文件(不想使用servlet),我有一个简单的表单,2个标签,2个输入和2个按钮,我想在同一个jsp页面上打印出提交的字符串***,问题是当我尝试新的值时,最后提交的值仍然打印在屏幕上,这就是为什么我想到了一个测试来检查按钮提交是否被点击之前,我们移动到显示,我尝试了以下代码:
<body>
<form method='post'>
<pre>
<label>Username</label> <input type="text" name="user" required/>
<label>Password</label> <input type="password" name="pwd" required />
<br>
<input type="submit" value="confirm" name ="submit" />
<input type="reset" value="clear" />
</pre>
</form>
<br>
// test if the submit button was clicked (check if value of submit is confirm)
<% String x=request.getParameter("submit")%>
<% if (x.equals("confirm")){ %>
<% if (request.getParameter("user")!="" && request.getParameter("pwd")!=""){ %>
<center>
<h4> user is : <% out.write(request.getParameter("user")); %> </h4>
<br>
<h4> password is : <% out.write(request.getParameter("pwd")); %> </h4>
</center>
<% } else { %>
<h4> inputs r empty !! </h4>
<% } %>
<% } %>
</body>
我在以下行收到错误:
<% if (x.equals("confirm")){ %>
知道为什么吗?
2条答案
按热度按时间svdrlsy41#
首先,停止不必要地打开和关闭JSP标记。这是草率和不可读的。第二,您缺少一个分号。第三,您需要检查参数为空的可能性。当表单没有提交时,参数为空。
这是不好的:
这样做:
你也可以反向比较字符串。如果你在一个为空的变量上使用点运算符,你会得到一个空指针异常。所以你可以在字符串文字上使用点运算符,这样就避免了显式检查空值:
同样,一旦你修复了这个问题,你会遇到一个
if (request.getParameter("user")!=""
的问题。你需要使用.equals()
,因为在Java中,对于String==
,!=
不比较字符串内容,而是比较指针(即内存地址)的等价性。ekqde3dh2#
这个问题似乎不太老。所以我可以放心地为这个问题加上一个答案。
基本上,当您要处理同一页面中提交的表单数据时,可以使用以下代码段:
代码是不言自明的。如果你点击提交按钮,那么你可以处理表单,否则你会被重定向到表单。希望这对你有帮助。