struts2中的ModelDriven

在使用struts2的时候,我们在jsp中经常写这样的代码片段:
<div class="unit">
	<label>学生姓名:</label>
	<input type="text" name="studentScores.stuName" value="${studentScores.stuName}" size="30" class="required" maxlength="20" />
</div>
			
<div class="unit">
	<label>考试名称:</label>
	<input type="text" name="studentScores.examName" value="${studentScores.examName}" size="30" maxlength="20" class="required" />
</div>
			
<div class="unit">
	<label>考试分数:</label>
	<input type="text" name="studentScores.score" value="${studentScores.score}" size="30" maxlength="20" class="required" />
</div>


其中studentScores.student.stuName是对应后台action的熟悉,action是这样写的

public class StudentExamAction extends ActionSupport {


	// 学生实体
	private Student studentScores;

	//查询学生的分数
	public String queryScores(){
	
		.....
		.....
	}
	

	public Student getStudentScores() {
		return studentScores;
	}

	public void setStudentScores(Student studentScores) {
		this.studentScores = studentScores;
	}

	
}

在action中设置了studentScores的getter/setter的属性,前台就可以使用对象名.属性名的方式设置或获取值了,studentScores.student.stuName当中,studentScores对象导航了两次,导航次数还比较少,当导航次数多了,造成了要写的字串很长,这是可以使用struts2的ModelDriven机制。


首先让action类继承ModelDriven接口,并实现getModel接口:

/**
 * 
 * 
 * @author : xqf
 * @group : tgb8
 * @Date : 2013-12-31 14:07:29
 * @Version : 1.0.0
 */
public class StudentExamAction extends ModelDriven {


	// 学生实体
	private Student studentScores;

	//实现getModel方法
	 @Override
    public Object getModel() {

       if(studentScores == null){
           studentScores = new studentScores();
       }
       return studentScores;

    }

	
	//查询学生的分数
	public String queryScores(){
	
		.....
		.....
	}
	

	public Student getStudentScores() {
		return studentScores;
	}

	public void setStudentScores(Student studentScores) {
		this.studentScores = studentScores;
	}

	
}

然后写上面的jsp页代码的时候就可以像下面一样了,代码少了一些:

<div class="unit">
			
	<label>学生姓名:</label>
	<input type="text" name="stuName" value="${stuName}" size="30" class="required" maxlength="20" />
</div>

<div class="unit">
	<label>考试名称:</label>
	<input type="text" name="examName" value="${examName}" size="30" maxlength="20" class="required" />
</div>

<div class="unit">
	<label>考试分数:</label>
	<input type="text" name="score" value="${score}" size="30" maxlength="20" class="required" />
</div>

背后的原理涉及到了在struts2传值中非常重要的valueStack,以后用一篇专门的博客来讲一讲,大家也可以参照下面这篇博客来帮助理解:

Struts2数据传输的背后机制

Struts2中ModelDriven机制及其运用


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值