0

我正在尝试在我的控制器中进行依赖注入,而不是使用 setters 方法,但它不起作用。目的是在使用控制器发布数据表单时将表单输入与我的域模型的属性绑定。

我想要什么:只需在使用 springframework 3.1 的控制器类中将域模型与我的表单绑定。

我的域类:

public class Person {

  private String name;

  @Autowired
  public Person(String name) {
    this.name = name;
  }

  public String getName() {
    return this.name;
  }

}

我的jsp(person-get):

<form action="test-person" method="post">
<table cellpadding="0" cellspacing="0" align="center">
  <tr>
      <td> <b> NAME: </b> </td>
      <td> <input type="text" id="name" name="name"> </td>
  </tr>
</table> 
</form>

我的控制器:

@Controller
public class PersonController {

@RequestMapping(value = "test-person", method = RequestMethod.GET)
public String loadViewGet() {       
  return "person-get";
}

@RequestMapping(value = "test-person", method = RequestMethod.POST)
public String doPost(Person person, Model model) {

    model.addAttribute("person", person);

    return "person-post";
    }

}

最后一个jsp显示用户输入的人名(person-post):

<table cellpadding="0" cellspacing="0" align="center">
<tr>
    <td> <b> NAME: </b> </td>
    <td> ${person.name} </td>
</tr>
</table> 

有一种方法可以在不使用 setter 方法的情况下将表单输入与我的模型类(Person)绑定?

任何人都知道另一个可以做到这一点的 java web 框架吗?

谢谢!

4

1 回答 1

0

@Autowired由应用程序上下文的 bean 工厂(在应用程序上下文 XML 或 bean 中定义的 bean)创建的 bean 支持注释和依赖注入@Configuration

MVC 的域模型对象是在请求数据绑定过程中由处理程序参数解析器(而不是应用程序上下文)创建的。不支持自动装配和其他 DI 功能。您必须为域模型对象使用属性访问器(getter 和 setter)。

于 2013-06-24T18:37:18.710 回答