我试图从Form参数到DTO对象,我点击按钮但没什么好笑的,似乎数据不是转移
为什么会这样?
Cntroller:
@RequestMapping(value = "/scanRequest", method = RequestMethod.POST)
public String scanRequest(@ModelAttribute("scanForm")UserRequestDTO userRequestDTO, BindingResult bindingResult, Model model) {
if (bindingResult.hasErrors()) {
return "home";
}
model.addAttribute("msg", userRequestDTO.getSellerName());
return "home";
}
DTO:
public class UserRequestDTO {
private String seller_name;
public String getSellerName() {
return seller_name;
}
public void setSellerName(String sellerName) {
seller_name = sellerName;
}
}
HTML表单:
<form:form method="POST" action="${contextPath}/requestlist" modelAttribute="scanForm" class="form-signin">
<h2 class="form-signin-heading">Create your account</h2>
<spring:bind path="seller_name">
<div class="form-group ${status.error ? 'has-error' : ''}">
<form:input type="text" path="seller_name" class="form-control" placeholder="Seller Name" autofocus="true"></form:input>
<form:errors path="seller_name"></form:errors>
</div>
</spring:bind>
<button class="btn btn-lg btn-primary btn-block" type="submit">Submit</button>
</form:form>
更新错误:
org.apache.jasper.JasperException:javax.servlet.ServletException: javax.servlet.jsp.JspTagException:既不是BindingResult也不是普通的 bean名称'scanForm'的目标对象可用作请求属性
更新错误 - 2
org.apache.jasper.JasperException: org.springframework.beans.NotReadablePropertyException:无效 bean类的属性'seller_name' [com.searcher.model.UserRequestDTO]:Bean属性'seller_name'是 不可读或有无效的getter方法:是否返回类型 getter匹配setter的参数类型?
答案 0 :(得分:2)
您的帖子入口点为/scanRequest
,但是您提交给/requestlist
,它会失败,因为您没有定位到正确的映射方法。
如果/requestlist
是请求映射您的控制器(包含方法scanRequest的那个)而不是将您的表单更改为:
<form:form method="POST"
action="${contextPath}/requestlist/scanRequest"
modelAttribute="scanForm" class="form-signin">...
如果不是,你的控制器
<form:form method="POST"
action="${contextPath}/scanRequest"
modelAttribute="scanForm" class="form-signin">...
修改强>
渲染包含表单的页面时,scanForm
不存在,因此您必须添加它,将此方法添加到控制器:
@ModelAttribute("scanForm")
public UserRequestDTO getScanForm(){
return new UserRequestDTO();
}
编辑2:
为您的模型添加正确的getter:
public String getSellerName() {
return seller_name;
}
这不是属性seller_name
将其更改为
public String getSeller_name() {
return seller_name;
}
或让IDE自动生成它们。