java Spring MVC表单提交,在同一页面上填充
我正在尝试使用post方法创建一个简单的函数。我想要的是在表格中输入并提交的任何内容——它应该出现在表格下方的同一页上。然而,一旦我点击“提交”,文本就会消失。这是我的密码
控制者
@Controller
public class SearchController {
@RequestMapping(value = "/search", method = RequestMethod.GET)
public String goToSearch(Model model) {
model.addAttribute("item", new Item());
return "itemsearch";
}
@RequestMapping(value = "/search", method = RequestMethod.POST)
public String search(Item item, Model model, @RequestParam String itemId) throws IOException{
model.addAttribute("item", new Item());
return "itemsearch";
}
}
Jsp文件
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="s" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>Search for an item</h2>
<sf:form action="search" method="POST" modelAttribute="item">
<label>Please enter the item Id number:<sf:input type="text" name="itemId" id="itemId" path="itemId" /></label><br/>
<input type="submit" value="Submit" path="submit" />
<br> You are trying to search for Id Number: <b><h3>${item.itemId}<h3></h3></b>
</sf:form>
项目类别
public class Item {
private String itemId;
private List<String> itemDetails;
public List<String> getItemDetails() {
return itemDetails;
}
public void setItemDetails(List<String> itemDetails) {
this.itemDetails = itemDetails;
}
public String getItemId() {
return itemId;
}
public void setItemId(String itemId) {
this.itemId = itemId;
}
}
非常感谢
# 1 楼答案
我认为您需要基本了解Spring MVC的工作原理
看看这张照片:
您看到来自客户端的传入请求(您的
POST
请求),该请求被重定向到所需的控制器。控制器(你的SearchController
)产生了一些商业魔力,并将模型返回给前端控制器。默认情况下,模型为空。可以添加应该通过model.addAttribute("someId", someObject);
呈现的对象 传递的模型现在由视图模板(itemsearch
)处理,该模板将模板和模型连接到传递给客户端的(静态)响应这就是问题所在。您正在将控制器
new Item()
传递给模型。它是一个空对象,没有值(也没有要在表单提交后呈现的id
)。因此,JSP页面上可能什么都没有显示。只需将找到的项或请求中的项传递给模型