、请求参数的注入

在Struts2框架中,表单的提交的数据会自动注入到与Action对象相对应的属性。它与Spring框架中的IoC的注入原理相同,通过Action对象为属性提供setter方法注入

要求:

jsp中表单的name属性与Action中对应的属性的setter方法对应。要注入属性值的Action对象,必须为该属性提供setXXX()方法,因为Struts2的内部实现是按照JavaBean规范中提供的setter方法,自动为属性注入值

所以一般在Action中注入的属性的属性名与表单对应控件的name值相等,且该属性提供getXXX()、setXXX()方法

 

域模型DomainModel

我们使用有相同点的属性都喜欢把它封装,这样比较结构化,简单明了。第一种方式注入请求参数在参数过多的情况下可能造成action中的代码过多

将一些属性信息封装成一个实体对象的属性。操作领域对象的方法,在Action对象中引用某一实体对象,并且http请求的参数值可以注入到实体对象的属性上,这种方式i就是struts2提供的DomainModel的方式

注意:使用域模型的时候,jsp中的表单空间的name属性应该与Action中的对象和bean中的属性对应,格式为 对象.属性 ,例如:user.name

public Class User{
  private String name;
  private String password;
  private int age;
  public void setName(String name){this.name=name;}
  public String getName(){return name;}
  public void setPassword(String password){this.password=password;}
  public String getPassword(){return password;}
  public void setAge(int age){this.age=age;}
  public int getAge(){return age;}
}

public Class UserAction extends ActionSupport{
  private User user;
  public void setUser(User user){this.user=user;}
  public User getUser(){return User;}
  public String execute() throws Exception{
   return "success";
 }
}

<body>
 <s:form action="userAction" method="post">
    <s:textfield name="user.name" label="用户名"/>
    <s:password name="user.password" label="密码" />
    <s:textfield name="user.age" label="年龄"/>
    <s:submit value="注册"/>
 </s:form>
</body>
View Code

相关文章:

  • 2022-12-23
  • 2021-08-18
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-28
猜你喜欢
  • 2021-10-31
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-15
  • 2021-11-18
  • 2021-11-29
相关资源
相似解决方案