2012-04-16 92 views
1

我正在編寫一個簡單的Web應用程序來執行計算。我有2個按鈕,用於加和減,但它們不起作用。我試圖使用switch聲明和if聲明,但都沒有工作。你能否幫助我理解這個問題。在JSP頁面上添加和減去按鈕不起作用

這裏是我的代碼...

<% 
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

什麼不起作用?這個文件叫做'adder.jsp'嗎? – styfle 2012-04-16 02:07:54

+2

我在互聯網上看到了這個視頻; grody! – 2012-04-16 02:09:48

+1

有趣的問題標題。 – Hassan 2012-04-16 02:12:47

回答

1

看來你已經嚴重複制例如從什麼地方:

request.getParameter()語法是:

request.getParameter("formParamName"); 

閱讀更多:Java Docs

在這裏,你一定會得到NULL,因爲沒有參數命名爲「添加」或「減去」。

更改代碼

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); 
} 
+0

非常感謝您的幫助 – toky 2012-04-16 17:53:00

1

您需要使用id屬性唯一標識每個輸入元素。注意你有兩個元素id="submit"。我想你的意思是把id =「add」和id =「subtract」。

+0

仍然不起作用 – toky 2012-04-16 02:31:27

+0

哎呀,我的意思是說'名稱',而不是'ID',儘管ID仍然應該是唯一的。 name屬性是用於參數名稱的值,value是參數值。 – styfle 2012-04-16 03:19:01

0

我想你的方式來獲取參數是不正確的。 您應該使用像: request.getParameter(「xxx」) 其中xxx是您的參數名稱,以獲取參數的值。

在你的HTML代碼示例,它應該是:用request.getParameter(「提交」) 沒有用request.getParameter(「添加」)或(「減去」),他們都將返回null, 所以什麼都不會發生。

我建議你應該修改的是兩個輸入標籤的HTML代碼,這 使用兩種不同的name屬性來分體不同的操作:添加/。減去的 而不是兩個相同的名稱(「提交」)輸入標籤代碼。

相關問題