我正在处理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")){ %>
任何想法为什么?
答案 0 :(得分:0)
首先,不必要地停止打开和关闭JSP标记。它的草率和难以理解。其次,你错过了一个分号。第三,您需要检查参数是否为null的可能性。未提交表单时,参数为null。
这很糟糕:
<% String x=request.getParameter("submit")%>
<% if (x.equals("confirm")){ %>
这样做:
<%
String x = request.getParameter("submit");
if(x!=null && x.equals("confirm"))
{
...
您也可以撤消字符串比较。如果对null为null的变量使用点运算符,则会出现空指针异常。因此,您可以在字符串文字上使用点运算符,从而避免显式检查null:
<%
String x = request.getParameter("submit");
if("confirm".equals(x))
{
...
一旦你解决了这个问题,你就会遇到if (request.getParameter("user")!=""
的问题。您需要使用.equals()
,因为在Java for String ==
中,!=
不比较字符串内容,而是比较指针(即内存地址)的等效性。
答案 1 :(得分:0)
这个问题看起来并不太旧。所以我可以安全地添加这个问题的答案。
基本上,当您想要在同一页面中处理提交的表单数据时,您可以使用以下代码段:
<%
String check_submit_form = request.getParameter("submit");
if((request.getParameter("btnLogon") == null)?false:true){
for(int i =0;i<=100;i++){
out.println("Congrts Bro . you have done a great job .");
}
}
else{
%>
<form name="form_logon" method="POST" action ="logonHome.jsp">
<input type="submit" value="Click for Finger Verification" name="btnLogon">
</form>
<%
}
%>
代码不言自明。如果您点击提交按钮,则可以处理表单,否则您将被重定向到表单。希望这可以帮助 。