如何将一个输入的值赋给一个来自控制器类的对象?

问题描述 投票:0回答:1

我是全栈编程的新手,正在开发一个培训项目。之前我用的是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>
java spring freemarker
1个回答
0
投票

以下是我在你的代码中注意到的事情。

请求映射映射了这个控制器的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 类,这样我就可以提供一个工作答案。

© www.soinside.com 2019 - 2024. All rights reserved.