struts validate验证

struts的验证可以有两种实现方式:
1.利用action名-validate.xml配置的方式。
2.在具体action中重写validate()方法。

在此讨论第二种实现方式

先区分一下几个不同的概念:
this.addFieldError("key",message);
一旦不为空将会跳转到input,用<s:fielderror/>标签显示.可以指定fieldname(集合中得key)属性来达到分开显示指定的验证信息。

this.addActionError("");
一旦不为空将会跳转到input,用<s:actionerror/>标签显示.

this.addActionMessage("");
这个只是一个提示信息,在下文页面中用<s:actionmessage/>展示集合中得全部message。


使用validate(),需要重写ActionSupport的validate()方法,如果方法名写作validate(),则进入此类文件的action都要执行vlidate()方法,若写作validateXxx(),则只在执行action对应的Xxx()方法时,才会执行validateXxx()。比如如下示例,只有在执行login方法的时候才会执行validateLogin()方法。

1、jsp页面

<s:form id="loginForm" method="post" action="testLogin">
        		<s:textfield name="username" label="username" required="true"></s:textfield>
        		<s:password name="password" label="password"></s:password>
        		<s:submit value="submit"></s:submit>
        	</s:form>
        	<s:actionmessage/>

2、配置struts.xml

<action name="testLogin" class="packageName.ActionTestLoginAction" method="login">
            <result name="success">/login.jsp</result>
            <result name="fail">/login.jsp</result>
            <!--使用验证框架则必须配置input -->
            <result name="input">/login.jsp</result>
        </action>

3、编辑TestLoginaction.java

public class TestLoginAction extends ActionSupport{
	private String username;
	private String password;
	
	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 void validateLogin() {
		if(username==null || "".equals(username)){
			this.addFieldError("username", "username is not null");
		}
		if(password==null || "".equals(password)){
			this.addFieldError("password", "password is not null");
		}
	 /** 
         * 大家从上面的代码可以看出,Field错误需要一个key(一般用来表示是哪一个属性出的错误) 
         * 而Action错误和Action消息只要提供一个信息字符串就可以了。 
         */ 

	}
	
	public String login(){
		if(username=="s" && password=="s"){
			addActionMessage("success");
			return "success";
		}
		addActionMessage("fail");
		return "error";
	}
}
或者

1、jsp页面改为一下内容

             <form id="loginForm" method="post" action="userLogin.action">          
                    <label class="loginlabel" for="username">用户名:</label>
                    <input class="logininput" name="username" id="username" type="text" value="<%=loginname %>" />
                    <s:fielderror name="username" fieldName="usernameMsg"></s:fielderror>               
                    <label class="loginlabel" for="password"> 密&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;码:</label>                   
                        <input class="logininput"  name="password" id="password" type="password" />
                        <s:fielderror name="password" fieldName="passwordMsg"></s:fielderror>                
                    <input type="checkbox" name="saveMessage" style="width: 20px;margin-left: 60px;" />记住用户名               
                <button id="loginbtn" type="button" class="positive" name="loginbtn" οnclick="return login();">
                    <img src="images/key.png" />登录</button>
                <input type="submit" value="submit"/>
                <s:actionerror/>
            </form>
2、struts.xml同上

3、编辑TestLoginaction.java

public class TestLoginAction extends ActionSupport{
	private String username;
	private String password;
	
	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 void validateLogin() {
		if(username==null || "".equals(username)){
			this.addFieldError("usernameMsg", "username is not null");
		}
		if(password==null || "".equals(password)){
			this.addFieldError("passwordMsg", "password is not null");
		}
	
	}
	
	public String login(){
		if(username=="s" && password=="s"){
			addActionMessage("success");
			return "success";
		}
		addActionMessage("fail");
		return "error";
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值