[英](MVC Calculator) How to maintain the value of how many times an option from index.jsp is selected?
我的index.jsp的主體代碼:
1st Number: <input type="first" name="num1" size="15"required>
<select name="operator" size="1">
<option>+
<option>-
<option>*
<option>/
</select>
2nd Number: <input type="second" name="num2" size="15"required>
我的模型(CalcClass.java)中的代碼:
public int getAdd() {
int a = 0;
if(operator.equals("+"))
{
a++;
}
return a;
}
public int getSubtract() {
int s = 0;
if(operator.equals("-"))
{
s++;
}
return s;
}
public int getMultiply() {
int m = 0;
if(operator.equals("*"))
{
m++;
}
return m;
}
public int getDivide() {
int d = 0;
if(operator.equals("/"))
{
d++;
}
return d;
}
我的Servlet(CalcServlet.java)的代碼:
int add = cc.getAdd();
int minus = cc.getSubtract();
int multiply = cc.getMultiply();
int divide = cc.getDivide();
request.setAttribute("a", add);
request.setAttribute("s", minus);
request.setAttribute("m", multiply);
request.setAttribute("d", divide);
RequestDispatcher view = request.getRequestDispatcher("result.jsp");
view.include(request, response);
我的result.jsp的代碼:
String add = String.valueOf(request.getAttribute("a"));
String s = String.valueOf(request.getAttribute("s"));
String m = String.valueOf(request.getAttribute("m"));
String d = String.valueOf(request.getAttribute("d"));
out.print(" + " + " = " + add);
out.print(" - " + " = " + s);
out.print(" * " + " = " + m);
out.print(" / " + " = " + d);
<a href ="index.jsp" >BACK</a>
我的問題是我只能在我的result.jsp中按BACK鏈接(href = index.jsp)轉到另一個提交按鈕后,才從第一次單擊提交按鈕開始計算使用的選項(操作員)從我的第一次點擊中重置為0。
我可以看到一個可能的錯誤是:您已經在方法中初始化了int變量 。 假設getAdd()方法。 因此,每次調用getAdd()方法時,變量“ a”都將設置為0,並且它將覆蓋先前的值。
此錯誤對於所有方法也相同。
您應該將那些變量聲明為類的“實例變量”,而不是method內部的局部變量 。
更正並再次檢查。 希望能幫助到你。
你說 :
在我的result.jsp中按下我的BACK鏈接(href = index.jsp)后,轉到另一個提交按鈕
我可以注意到您從頁面移動到另一個頁面,並且參數的范圍是請求范圍,因為您輸入了:
request.setAttribute("a", add);
request.setAttribute("s", minus);
request.setAttribute("m", multiply);
request.setAttribute("d", divide);
因此,當您移動到另一個頁面時,該值將被銷毀,您需要使用會話范圍來執行此操作
request.getsession().setattribute("a", add);
request.getsession().setattribute("s", minus);
request.getsession().setattribute("m", multiply);
request.getsession().setattribute("d", divide);
現在,如果您移至index.jsp並調用例如
${a}
您會找到合適的價值
你說:
第一次單擊時計數的option(operator)的值重置為0以解決此問題,我建議:
1 /值被破壞,並且方法getAdd()例如將a初始化為0,您必須將其更改為(以及b,c,d)為類的參數
public class CalcClass{
private int a=0;
//...
}
2 /在index.jsp中,將input(a,b,c,d)的值更改為。
<input type="text" name="a" value="${a}"/>
......
您的代碼中有很多問題,還有一些重要的事情沒有向我們展示,我希望這會幫助您解決一些問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.