@Override标记的作用
之前就知道@Override标记的功能,它的意思是类中的一个方法覆盖了父类的方法。当编译类的时候,如果标记为覆盖的方法在父类中没有,编译器就会报错,使用ide时在写代码的时候如果标记的方法父类中没有就会提示错误。所以这个标记的意义就在于把需要覆盖的方法标记出来,防止自己写错名字。
以前以为这个功能挺鸡肋的,没什么用处,没想到今天还真让我给遇到了。 今天下载了struts2.1.6,想体验一下新的零配置。首先建立一个web项目写了一个demo。下面就是我的action
- public class HelloAction extends ActionSupport{
- private String msg;
- public String execuete(){
- msg="hello world";
- return SUCCESS;
- }
- public String getMsg() {
- return msg;
- }
- }
public class HelloAction extends ActionSupport{
private String msg;
public String execuete(){
msg="hello world";
return SUCCESS;
}
public String getMsg() {
return msg;
}
}
然后在返回的页面里使用s:property输出msg的值。 ,结果就是显示不出来值。配置什么的哪里也没错啊,找啊找找了好久(,用了一个多小时)没有结果。
最后还是偶然发现问题了,方法名写错了execuete多写了一个e,导致struts2调用了ActionSupport类的execute空方法,所以一直在jsp页面里得不到值。
平时写action的时候写execute方法netbeans都会提示覆盖了父类方法需要添加这个标记,今天写完execuete netbeans居然没有提示,当时就很纳闷,但是只是纳闷了一下并没有在意,导致了之前的错误。今天终于让我记住了,以后覆盖父类方法一定写上@Override标记。