1

我正在编写一个执行计算的简单网络应用程序。我有 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>
4

3 回答 3

1

您需要使用该id属性来唯一标识每个输入元素。请注意,您有两个带有id="submit". 我想你的意思是把 id="add" 和 id="subtract"。

于 2012-04-16T02:12:46.013 回答
1

看来您从某处严重复制了示例:

的语法request.getParameter()是:

request.getParameter("formParamName");

阅读更多:Java 文档

在这里,您肯定会得到 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);
}
于 2012-04-16T06:14:42.507 回答
0

我认为您获取参数的方式不正确。您应该使用 like:request.getParameter("xxx") 其中 xxx 是您的参数名称,以获取参数的值。

在您的 html 示例代码中,应该是:request.getParameter("submit") 而不是 request.getParameter("add") 或 ("substract"),它们都将返回 null,因此不会发生任何事情。

我建议您应该修改这两个输入标签的 html 代码,使用两个不同的名称属性来分隔不同的操作:添加/减去,而不是代码中的两个相同名称(“提交”)输入标签。

于 2012-04-16T03:00:31.443 回答