gpt4 book ai didi

java - Spring Web应用程序-获取表单数据-post方法

转载 作者:行者123 更新时间:2023-12-02 03:27:53 24 4
gpt4 key购买 nike

我正在尝试从 Form 参数获取 DTO 对象,我单击了按钮但没有任何反应,并且似乎数据未传输

这是为什么?

Controller :

@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: Neither BindingResult nor plain target object for bean name 'scanForm' available as request attribute

更新错误 - 2

org.apache.jasper.JasperException: org.springframework.beans.NotReadablePropertyException: Invalid property 'seller_name' of bean class [com.searcher.model.UserRequestDTO]: Bean property 'seller_name' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

最佳答案

您的帖子入口点是 /scanRequest 但您提交到 /requeSTList,它会失败,因为您没有定位正确的映射方法。

如果 /requeSTList 是 Controller 的请求映射(包含 scanRequest 方法的 Controller ),则将表单更改为:

<form:form method="POST" 
action="${contextPath}/requestlist/scanRequest"
modelAttribute="scanForm" class="form-signin">...

如果不是,并且您的 Controller 这样做

   <form:form method="POST" 
action="${contextPath}/scanRequest"
modelAttribute="scanForm" class="form-signin">...

编辑:

渲染包含表单的页面时,您的 scanForm 不存在,因此您必须添加它,将此方法添加到您的 Controller 中:

@ModelAttribute("scanForm")
public UserRequestDTO getScanForm(){
return new UserRequestDTO();
}

编辑2:

向您的模型添加正确的 setter/getter :

public String getSellerName() {
return seller_name;
}

这不是属性 seller_name 的正确 getter,请将其更改为

public String getSeller_name() {
return seller_name;
}

让您的 IDE 自动生成它们。

关于java - Spring Web应用程序-获取表单数据-post方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38551086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com