我正在编写一个执行计算的简单Web应用程序。我有2个按钮,用于添加和减去,但它们不起作用。我尝试使用switch
语句和if
语句,但两者都不起作用。你能帮我理解这个问题。
这是我的代码......
<%
String name = (String) session.getAttribute("name");
if (name==null) {
name = request.getParameter("name");
if (name!=null){
session.setAttribute("name",name);
}
}
String sum = (String) session.getAttribute("sum");
if (sum==null) {
sum = "0";
session.setAttribute("sum",sum);
}
int isum = Integer.parseInt(sum);
String number = request.getParameter("number");
if (number==null){
number = "0";
}
int inumber = Integer.parseInt(number);
if(request.getParameter("add") != null){
isum += inumber;
session.setAttribute("sum",""+isum);
}
if(request.getParameter("subtract") != null){
isum += inumber;
session.setAttribute("sum",""+isum);
}
%>
<html>
<head>
<title>Adding Machine</title>
</head>
<body>
<form method='get' action='adder.jsp'>
<%
if (name==null) {
%>
<p>
Name: <input type='text' name='name' id='name'>
</p>
<p>
<input type='submit' name='submit' id='submit' value='signin'>
</p>
<%
} else {
%>
<p>Welcome, <%=name%>!</p>
<p>Current sum is: <%=isum%></p>
<p>
Number to add: <input type='text' name='number' id='number' value='add'>
</p>
<p>
<input type='submit' name='submit' id='submit' value='add'>
</p>
<p>
<input type='submit' name='submit' id='submit' value='subtract'>
</p>
<%
}
%>
</form>
</body>
</html>
答案 0 :(得分:1)
您需要使用id
属性来唯一标识每个输入元素。请注意,您有两个id="submit"
元素。我认为你的意思是把id =&#34;添加&#34;和id =&#34;减去&#34;。
答案 1 :(得分:1)
似乎你从某个地方复制了很多例子:
request.getParameter()
的语法是:
request.getParameter("formParamName");
阅读更多内容:Java Docs
在这里你肯定会得到NULL,因为没有名为“add”或“subtract”的参数。
将您的代码更改为
if(request.getParameter("submit") != null){
if(request.getParameter("submit").equals("add"))
isum += inumber;
else if(request.getParameter("submit").equals("subtract"))
isum -= inumber;
session.setAttribute("sum",""+isum);
}
答案 2 :(得分:0)
我认为你获取参数的方式不对。 你应该使用像: 用request.getParameter( “XXX”) 其中xxx是您的参数名称,以获取参数的值。
在你的html示例代码中,它应该是:request.getParameter(“submit”) 不是request.getParameter(“add”)或(“substract”),它们都将返回null, 所以什么都不会发生。
我建议你修改那两个输入标签的html代码 使用两个不同的name属性来分隔不同的操作:add / substract, 而不是代码中的两个相同名称(“提交”)输入标记。