通过实例学习Struts2 (2)
接上一篇 《通过实例学习Struts2 (1) 》
在Action中支持通配符在example.xml 中,我们能看到这样的定义:
<action name="Login_*" method="{1}" class="example.Login">
<result name="input">/example/Login.jsp</result>
<result type="redirectAction">Menu</result>
也就是说要执行java 类Login 中的execute,input方法。
实验一下:http://localhost:8080/struts2-blank/example/Login_excute, 注意namespace 是/example
果然登录界面出现了:

再尝试一下http://localhost:8080/struts2-blank/example/Login_test , 报错了:
Exception:
java.lang.NoSuchMethodException: example.Login.test()Stack trace:
java.lang.NoSuchMethodException: example.Login.test()at java.lang.Class.throwNoSuchMethodException(Class.java:286)at java.lang.Class.getMethod(Class.java:845)at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.getActionMethod(AnnotationValidationInterceptor.java:75)at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:47)at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239)at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239)
还记得之前定义Global error page 吗, 很明显上面的界面是由error.jsp 渲染出来的,使用struts2提供的tag library ,很方便
public void validate(){ if(!"andy".equals(getUsername())){ addFieldError("username",getText("user.incorrect")); } if(!"pass4andy".equals(getPassword())){ addFieldError("password",getText("password.incorrect")); } }user.incorrect=User name is not correct
password.incorrect=Password is not correct
试着登陆一下,你就会发现我们的validate开始工作了,是不是很easy ?
今天到此为止,明天来看看国际化怎么做