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

Struts2中的ModelDriven机制及其运用

2013年11月12日 ⁄ 综合 ⁄ 共 2794字 ⁄ 字号 评论关闭

ModelDriven


 

为什么需要ModelDriven




 

所谓ModelDriven
,意思是直接把实体类当成页面数据的收集对象。比如,有实体类User
如下:

 

package

cn.com.leadfar.struts2.actions;

 

public


class

User {

   
private


int


id
;

   
private

String
username
;

   
private

String
password
;

   
private


int


age
;

   
private

String
address
;

   
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


int

getAge() {

      
return


age
;

    }

   
public


void

setAge(
int

age) {

      
this

.
age
= age;

    }

   
public

String getAddress() {

      
return


address
;

    }

   
public


void

setAddress(String address) {

      
this

.
address
= address;

    }

   
public


int

getId() {

      
return


id
;

    }

   
public


void

setId(
int

id) {

      
this

.
id
= id;

    }

   

   

}

 

 

假如要写一个Action
,用来添加User

第一种做法是直接在Action
中定义所有需要的属性,然后在JSP
中直接用属性名称来提交数据:

UserAction:

 

public


class

UserAction {

   
private


int


id
;

   
private

String
username
;

   
private

String
password
;

   
private


int


age
;

   
private

String
address
;

 

   
public

String add(){

      

      
User user =
new

User();

       user.setId(
id
);

      
user.setUsername(
username
);

       user.setPassword(
password
);

       user.setAge(
age
);

       user.setAddress(
address
);

      

      
new

UserManager().addUser(user);

      

      
return


"success"
;

    }

   

   
public


int

getId() {

      
return


id
;

    }

   
public


void

setId(
int

id) {

      
this

.
id
= id;

    }

   
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


int

getAge() {

      
return


age
;

    }

   
public


void

setAge(
int

age) {

      
this

.
age
= age;

    }

   
public

String getAddress() {

      
return


address
;

    }

   
public


void

setAddress(String address) {

      
this

.
address
= address;

    }

   

}

 

add_input.jsp:

 

    
<
form
action
=
"test/user.action"
method
=
"post"
>

       
<
input
type
=
"hidden"
name
=
"method:add"
>

        username:
<
input
type
=
"text"
name
=
"username"
>

<
br
/>

        password:
<
input
type
=
"text"
name
=
"password"
>

<
br
/>

        age:
<
input
type
=
"text"
name
=
"age"
>

<
br
/>

        address:
<
input
type
=
"text"
name
=
"address"
>

<
br
/>

       
<
input
type
=
"submit"
name
=
"submit"
value
=
"
添加用户

"
>

    
</
form
>

<
br
/>

上述做法不好之处是:如果实体类的属性非常多,那么Action
中也要定义相同的属性。

 

 

第二种做法是将User
对象定义到UserAction
中,然后在JSP
中通过user
属性来给user
赋值:

UserAction:

 

public


class

UserAction {

   

   
private

User
user
;

   

   
public

String add(){

 

      
new

UserManager().addUser(
user
);

      

      
return


"success"
;

    }

 

   
public

User getUser() {

      
return


user
;

    }

 

   
public


void

setUser(User user) {

      
this

.
user
= user;

    }

   

   

}

 

add_input.jsp:

 

    
<
form
action
=
"test/user.action"
method
=
"post"
>

       
<
input
type
=
"hidden"
name
=
"method:add"
>

        username:
<
input
type
=
"text"
name
=
"user.username"
>

<
br
/>

        password:
<
input
type
=
"text"
name
=
"user.password"
>

<

抱歉!评论已关闭.