现在的位置: 首页 > 综合 > 正文

Struts2学习笔记(14)—–使用ModelDriven接口直接访问对象属性

2013年03月12日 ⁄ 综合 ⁄ 共 3381字 ⁄ 字号 评论关闭

        

           上篇我们说了如果在jsp页面访问某个对象的某个属性时,我们是采取“对象.属性”的语法进行的,可是如果要使用很多的属性,我们也这样来来回回的一个一个的写,是不是很麻烦?这节就是解决这个小问题的。


         更简单的做法就是实现ModelDriven这个接口然后在他的getModel()方法中返回这个对象,在jsp页面直接调用这个对象的属性就可以了,具体做法是:


         创建一个ModelDriven我们的Action类需要实现ModelDriven接口并且需要包括modelDriven拦截器。但是这个拦截器已经包含在默认的拦截器中,所以我们就不需要额外去配置了。


         接下来就是实现getModel()方法,返回一个领域对象。当使用ModelDriven的方法时我们需要创建一个领域对象的实例,框架就会自动将数据传给对象,如User对象。


         好了,建一个Action类继承ActionSupport类并且实现ModelDriven接口,代码如下所示:


 

package com.iman.action;
 
import com.iman.model.User;
importcom.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
 
public class UserAction1 extendsActionSupport implements ModelDriven<Object> {
        
         privateUser user=new User();
        
         @Override
         publicObject getModel() {
                   //TODO Auto-generated method stub
                   returnuser;
         }
        
         @Override
         publicString execute() throws Exception {
                   //TODO Auto-generated method stub
                   returnSUCCESS;
         }
         publicUser getUser() {
                   returnuser;
         }
 
         publicvoid setUser(User user) {
                   this.user= user;
         }
        
        
}

        在Action中我们访问user对象的name,age的属性就可以用下面的语法了:


        

 uer.getName();
         uer.getAge();
         ……


        User类的代码如下所示:


package com.iman.model;
 
public class User {
    private String name;
    private String sex;
    private int age;
    private String[] hobby;
    private String country;
   
    public User() {
       super();
       // TODO Auto-generatedconstructor stub
    }
    public String getName() {
       return name;
    }
    public void setName(String name) {
       this.name = name;
    }
    public String getSex() {
       return sex;
    }
    public void setSex(String sex) {
       this.sex = sex;
    }
    public int getAge() {
       return age;
    }
    public void setAge(int age) {
       this.age = age;
    }
    public String[] getHobby() {
       return hobby;
    }
    public void setHobby(String[] hobby) {
       this.hobby = hobby;
    }
    public String getCountry() {
       return country;
    }
    public void setCountry(String country) {
       this.country = country;
    }
   
   
   
}

            在jsp页面中,我们现在开始可以直接访问user的属性了:


         

 .......
         name=”name”;
         name=”age”
         ……

 

          注册表单register. jsp页面如下:


<%@ page language="java"contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s"uri="/struts-tags" %>   
<!DOCTYPE html PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"content="text/html; charset=UTF-8">
<title>注册表单</title>
</head>
<body>
    <s:form action="userAction">
       <s:textfield name="name"label="姓名"></s:textfield>
       <s:textfield name="age"label="年龄"></s:textfield>
       <s:radio name="sex"label="性别" list="{'男','女'}"></s:radio>
       <s:checkboxlist name="hobby"label="爱好" list="{'唱歌','跳舞','上网','睡觉'}"></s:checkboxlist>
       <s:select name="country"label="国家" list="{'中国','美国','英国'}"></s:select>
       <s:submit value="提交"></s:submit>
    </s:form>
</body>
</html>

          注册信息mess.jsp页面如下所示:

 

<%@ page language="java"contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s"uri="/struts-tags" %>   
<!DOCTYPE html PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"content="text/html; charset=UTF-8">
<title>用户信息</title>
</head>
<body>
    注册信息
    <hr>
    姓名:<s:property value="name"/><br>
    年龄:<s:property value="age"/><br>
    性别:<s:property value="sex"/><br>
    爱好:<s:property value="hobby"/><br>
    国家:<s:property value="country"/>
   
   
</body>
</html>

 

             打开服务器并部署项目,运行register.jsp页面如下所示:




         注册信息展示页面mess.js如下所示:




         可见效果是一样的,只是用这种方式在访问对象的属性时更简单,好了,今天就学习到这儿,附上struts.xml的配置文件代码:


<package name="modeldriven" extends="struts-default" namespace="/modeldriven">
        <action name="userAction" class="com.iman.action.UserAction1">
            <result name="success">/domain/mess.jsp</result>
        </action>
</package>
 


这是本人学习的结果,欢迎转载,欢迎交流,但转载务必给出本文章的链接地址:http://blog.csdn.net/youqishini/article/details/7179417,谢谢~






抱歉!评论已关闭.