我对 Spring 很陌生,遇到以下问题。
我有以下控制器,其中 @Autowired 完美运行(尝试调试并且运行良好)。
@Controller
@RequestMapping(value = "/registration")
@SessionAttributes("rf")
public class RegistrationController
{
@Autowired
UserJpaDao userDao;
@RequestMapping(method = RequestMethod.GET)
@Transactional
public String setupForm(Model model) throws Exception
{
model.addAttribute("rf", new RegistrationForm());
return "registration";
}
@RequestMapping(method = RequestMethod.POST)
@Transactional
public String submitForm(@ModelAttribute("rf") RegistrationForm rf, Model model) throws Exception
{
// ...
User user = rf.getUser();
userDao.save(user);
// ...
return "registration";
}
}
但是当我提交表单时,我的 RegistrationForm 中的 @Autowired 字段仍然为空。
注册表格.java:
@Component
public class RegistrationForm
{
@Autowired
CountryJpaDao countryDao;
// ... fields...
public RegistrationForm()
{
}
@Transactional
public User getUser() throws InvalidUserDataException
{
//...
Country c = countryDao.findByCode("GB"); // Throws java.lang.NullPointerException
// ...
}
// ... getters/setters...
}
这是表单的 HTML/JSTL:
<form:form method="POST" modelAttribute="rf">
...
</form:form>
谁能帮我?
谢谢你。
(灵感来自SpringSource 论坛上的这篇文章)