[英](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.