关于Struts2 的set get方法问题
今天在做项目的时候无意间发现一个很奇怪的问题首先我在pojo包中定义了一个叫Num的类,里面有one,two,three,four四个私有变量,分别写了setget方法,...
今天在做项目的时候无意间发现一个很奇怪的问题 首先我在pojo包中定义了一个叫Num的类,里面有one,two,three,four四个私有变量,分别写了set get方法,又写了一个JSP里面写了一个form表单,里面有4个input标签,name分别是num.one,num.two, num.three ,num.four,然后form提交到myaction!add.action,这个action在struts.xml里配了一下,是指向action包中的MyAction.java中的add方法,
MyAction.java这个里面定义了一个Num类型的变量num,然后我在add方法里system.out.println了one,two,three,four四个值。
一开始我只在MyAction.java里写了num的set方法,然后开了服务器运行了一下我在4个input里分别输了1 2 3 4然后提交表单,发现控制台输出的是null2nullnull,说明只有num.two得到了值。
第二次我在MyAction.java中又加了num的get方法,结果输出的是1234,说明都得到值了。
我就觉得奇怪了,当后台需要向前一个显示页面取值的时候才会调set方法,显示页面需要向前台拿值的时候才会调get方法,这里应该只会调set方法,但为什么不写get方法就拿不到值呢,而且为什么又只拿到了num.two这个值
求解答
这是HTML部分代码:
<body>
<form name="form" action="myaction!add.action">
<table>
<tr>
<td><input type="text" name="num.one"/></td>
<td><input type="text" name="num.two"/></td>
<td><input type="text" name="num.three"/></td>
<td><input type="text" name="num.four"/></td>
<td><input type="submit" /></td>
</tr></table>
</form>
</body>
MyAction.java代码:
public class MyAction {
private Num num;
public void setNum(Num num) {
this.num = num;
}
/*public Num getNum() {
return num;
}
这个get方法不加就只能得到num.two的值,加了就能得到4个值*/
public void add(){
System.out.println(num.getTwo());
}
}
Num.java代码贴不下了 就是定义了四个私有变量one,two,three,four都是String类型,都分别定义了get set方法 展开
MyAction.java这个里面定义了一个Num类型的变量num,然后我在add方法里system.out.println了one,two,three,four四个值。
一开始我只在MyAction.java里写了num的set方法,然后开了服务器运行了一下我在4个input里分别输了1 2 3 4然后提交表单,发现控制台输出的是null2nullnull,说明只有num.two得到了值。
第二次我在MyAction.java中又加了num的get方法,结果输出的是1234,说明都得到值了。
我就觉得奇怪了,当后台需要向前一个显示页面取值的时候才会调set方法,显示页面需要向前台拿值的时候才会调get方法,这里应该只会调set方法,但为什么不写get方法就拿不到值呢,而且为什么又只拿到了num.two这个值
求解答
这是HTML部分代码:
<body>
<form name="form" action="myaction!add.action">
<table>
<tr>
<td><input type="text" name="num.one"/></td>
<td><input type="text" name="num.two"/></td>
<td><input type="text" name="num.three"/></td>
<td><input type="text" name="num.four"/></td>
<td><input type="submit" /></td>
</tr></table>
</form>
</body>
MyAction.java代码:
public class MyAction {
private Num num;
public void setNum(Num num) {
this.num = num;
}
/*public Num getNum() {
return num;
}
这个get方法不加就只能得到num.two的值,加了就能得到4个值*/
public void add(){
System.out.println(num.getTwo());
}
}
Num.java代码贴不下了 就是定义了四个私有变量one,two,three,four都是String类型,都分别定义了get set方法 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询