我是全栈编程的新手,正在开发一个培训项目。之前我用的是jsp,在那里很容易处理这些类型的东西,但是现在在ftl上工作。我试图发送一个对象到模板,并希望用模板中的值填充这个对象的字段。但是模板每次尝试都返回null或者给出一个错误.是我的错,还是在ftl中可以做到这一点?从现在开始谢谢你。
这是我的Get方法,将DatabaseUser对象发送给模板。
@RequestMapping(value="/createRequest.html", method= RequestMethod.GET)
public ModelAndView add() throws ServiceException {
DatabaseUser dbUser = new DatabaseUser();
ModelAndView mav = new ModelAndView("index");
mav.addObject("user", dbUser);
return mav;
}
而这个是post方法,试图获取模板的表单值,并将其分配给对象的字段。
我只是想从表单输入中获取字符串,将其赋值到dbUser对象的地址字段,然后将这个对象发送到save()方法。
@RequestMapping(value="/saveRequest.html", method=RequestMethod.POST)
public ModelAndView save(@ModelAttribute("user") DatabaseUser dbUser,
BindingResult bindingResult) throws ServiceException{
if(bindingResult.hasErrors()){
LOGGER.debug("Binding error count: " + bindingResult.getErrorCount());
}
if(dbUser.getBaseUser.getUserId()==0){
BaseUser baseUser = new BaseUser();
baseUser.setAddres(dbUser.getBaseUser().getAddress());
baseUser.setEmail(dbUser.getBaseUser().getEmail());
}
return add();
和我的ftl文件的部分,试图满足这种情况。
<div class="row">
<div class="col-sm-12 col-lg-6">
<form action="<@spring.url '/saveRequest.html' />"
modelAttribute="user" method="post" id="form3">
<input type="hidden" name="user" value="user"/>
<div class="form-group">
<label for="address"><@spring.message "translationrequest.documentNumber" /></label>
<input type="text" id="address" name="address" class="form-control"
maxlength="250" value="${(getBaseuser().setAddress())!}"/>
</div>
以下是我在你的代码中注意到的事情。
请求映射映射了这个控制器的REST网址,因此你需要把它固定为类似于:
@RequestMapping(value="/save", method=RequestMethod.POST)
然后确保当用户提交时,你的表单能找到它。
<form action="<@spring.url '/save' />"
注意: 没有closign标签 </form>
的表格。请将其添加到第二个输入字段之后。
您只有一个输入字段绑定到地址,因此您不会在这一行中得到电子邮件字段的填充。baseUser.setEmail(dbUser.getBaseUser().getEmail());
这将使其为空。
你的代码所做的是创建新的 DatabaseUser
并将其发送到索引页,然后构建这个HTML表单,地址字段显示的是 ${(getBaseuser().setAddress())!}
而如果你的 new BaseUser()
没有在地址中设置一个值,你不会看到任何地址显示。
我建议你提供 DatabaseUser
类,这样我就可以提供一个工作答案。