概述
1.struts2的每个action都将继承ActionSupport这个类,从而重写execute这个方法。现在我们希望struts2自动执行我们自己的方法,目的是为了一个action中可以处理多个请求。
方式如下:
struts2.xml:
<action name="login" class="com.erzong.struts2.LoginAction" method="myExecute">
<result name="success">/result.jsp</result>
</action>
LoginSupport类:
public String myExecute() throws Exception
{
return SUCCESS;
}
一般公司不使用这种方法,因为在实际开发中,因为多个请求可能接收不同的参数,而如果把多个处理请求定义在同一个action中,有可能造成代码混乱。
2.模拟注册流程验证注册信息的正确性,如果错误信息则回填前面页面。
register.jsp页面:
RegisterAciton:(继承了ActionSupport类,而ActionSupport类实现了验证的接口。里面有个空实现的validate方法用于验证,而validate是前于execute执行)
public class RegisterAction extends ActionSupport
{
private String username;
private String password;
private String repassword;
private int age;
private Date birthday;
private Date graduation;
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
public String getRepassword()
{
return repassword;
}
public void setRepassword(String repassword)
{
this.repassword = repassword;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public Date getBirthday()
{
return birthday;
}
public void setBirthday(Date birthday)
{
this.birthday = birthday;
}
public Date getGraduation()
{
return graduation;
}
public void setGraduation(Date graduation)
{
this.graduation = graduation;
}
@Override
public String execute() throws Exception
{
return SUCCESS;
}
@Override
public void validate()
{
if (null == username || username.length() < 4 || username.length() > 6)
{
this.addActionError("username invalid");//使用struts标签库actionerror对错误信息进行输出
this.addFieldError("username", "username invalid in field");使用struts标签库fielderror对错误信息进行输出
}
if (null == password || password.length() < 4 || password.length() > 6)
{
this.addActionError("password invalid");
} else if (null == repassword || repassword.length() < 4
|| repassword.length() > 6)
{
this.addActionError("repassword invalid");
} else if (!password.equals(repassword))
{
this.addActionError("the passwords not the same");
}
if (age < 10 || age > 50)
{
this.addActionError("age invalid");
}
if (null == birthday)
{
this.addActionError("birthday invalid");
}
if (null == graduation)
{
this.addActionError("graduation invalid");
}
if (null != birthday && null != graduation)
{
Calendar c1 = Calendar.getInstance();
c1.setTime(birthday);
Calendar c2 = Calendar.getInstance();
c2.setTime(graduation);
if (!c1.before(c2))
{
this.addActionError("birthday should be before graduation");
}
}
// this.getFieldErrors().clear();
// this.getActionErrors().clear();
this.clearActionErrors();
this.clearFieldErrors();
System.out.println("invoked!!!");
}
}
struts.xml:如果输入不符合规范,则进入validate方法中的不合法情况下,这时需要定义返回页面,否则会出现如下页面
这时得在struts.xml中加入相应的结果映射
<action name="register" class="com.erzong.struts2.RegisterAction">
<result name="success">/registerResult.jsp</result>
<result name="input">/register.jsp</result>
</action>
register.jsp页面:要让回去的页面显示错误提示信息,加上<s:actionerror/>
运行结果(不正确填写)为:
3.当我们不仅仅要显示注册信息,而且需要显示我们已填写的错误信息,则需要struts的taglib来实现,使用方法还是和html元素类似,只是struts提供了更好的封装
register.jsp(改进版):
有的人不喜欢struts提供的样式,觉得不灵活,这时可以加上
4.综合Struts的类型转换和输入校验的例子,我们可以得出
5.addActionError和addFildError实现方式是创建一个集合,将错误一个个add进去,所以也可以调用clear将里面的错误将里面的错误清空
最后
以上就是寒冷导师为你收集整理的struts2的自定义方法与输入校验的全部内容,希望文章能够帮你解决struts2的自定义方法与输入校验所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复