ssh整合过程检验文件中校验属性的编写

ssh整合过程检验文件中校验属性的编写(校验属性名称编写规则)


      最近在学ssh整合,一个简单的项目:添加,删除,更新用户。

      通过MyEclipse搭建好开发环境+tomcat6.0.
      项目中只有一个持久化对象POJO:User。代码也很简单:
     
package vo;

import java.util.Date;

public class User {
	
	private int id;
	private String name;
	private String password;
	private Date createTime;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public Date getCreateTime() {
		return createTime;
	}
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
}
 
      项目中有添加用户,删除用户,更新用户和查询用户的功能。在struts2框架中通过使用DomainModel接收参数:            a.定义:定义Model类,在Action中定义Model类的对象(不需要new),创建该对象的get和set方法;            b.接收:通过对象的属性接收参数,如:user.Name();     
      addUserAction 的代码:
      
package action;

import java.util.*;

import model.UserModel;

import service.UserService;
import vo.User;
import com.opensymphony.xwork2.ActionSupport;

public class AddUserAction extends ActionSupport {
	
	private static final long serialVersionUID = 7711325818603000836L;
	private User user;
	private UserService userService;
	
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	public UserService getUserService() {
		return userService;
	}
	public void setUserService(UserService userService) {
		this.userService = userService;
	}
	
	public String execute(){
		
		this.userService.addUser(user);
	
		return SUCCESS;
	}
	
	public void validate(){
		Map map=this.getFieldErrors();
		Set set=map.keySet();
		
		for(Iterator it=set.iterator();it.hasNext();){
			System.out.println(map.get(it.next()));
		}
	}
	
}

   其中添加操作和更新操作都要通过校验才可以通过。
   下面是update.jsp的表单源码:

 <form action="<%=path%>/updateUserAction" method="post">
       <s:hidden name="user.id" value="%{user.id}"></s:hidden>
       姓名:<input type="text" name="user.name"/><br>
       <br>
       密码:<input type="password" name="user.password"/><br>
       <br>
       <input type="submit" value="更新"/>
       <input type="reset" value="重置"/>
     </form>




    AddUserAction-validation.xml的配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">


<validators>
	<field name="user.name">
		<field-validator type="requiredstring">
			<message>required  name  </message>
		</field-validator>
	</field>
	
	<field name="user.password">
		<field-validator type="requiredstring">
			<message>required password</message>
		</field-validator>
	</field>
</validators>	
	 

UpdateUserAction-validation.xml的配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

 
<validators>
	<field name="name">
		<field-validator type="requiredstring">
			<message>required  name</message>
		</field-validator>
	</field>
	
	<field name="password">
		<field-validator type="requiredstring">
			<message>required password</message>
		</field-validator>
	</field>

</validators>

完成后测试项目,添加操作没有问题,但是当进行更新操作的时候总是操作失败,当struts.xml文件对更新操作的action配置下:
 <action name="updateUserAction" class="updateUserAction" method="execute">
        <result name="success" type="redirect" >listUserAction.action</result>
        <result name="input">update.jsp</result>
 </action>

程序总是 跳转到  update.jsp 页面。但是程序没有报错。
使用了<s:debug></s:debug>标签,相关结果如下:




当struts.xml文件对更新操作的action配置下:

<action name="updateUserAction" class="updateUserAction" method="execute">
        <result name="success" type="redirect" >listUserAction.action</result>
</action>

这时候更新操作表单提交出现404错误,并且程序后台报错:
No result defined for action action.UpdateUserAction and result input
	at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:364)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266)
	at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
......

后来通过 <s:debug></s:debug>标签观察,发现问题出现在校验文件 UpdateUserAction-validation.xml的配置,校验属性应该和更新页面表单中的input标签的name属性的之相同。
更改为:
<validators>
	<field name="user.name">
		<field-validator type="requiredstring">
			<message>required  name</message>
		</field-validator>
	</field>
	
	<field name="user.password">
		<field-validator type="requiredstring">
			<message>required password</message>
		</field-validator>
	</field>

</validators>

重新测试,程序正常。
当后台不报错但是程序得不到想要的结构的时候,<s:debug></s:debug>标签就显得十分有用了。



























     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值