假设您有一些名为的类,EntityDemo
它具有所有字段,我认为您应该这样做:Getters
Setters
@Controller
public class SearchEntityController {
@RequestMapping(value = "/search", method = RequestMethod.GET)
public ModelAndView getEntityDemoByID(@ModelAttribute("search") Search search, BindingResult result) {
EntityDemo entityDemo = null;
Map<String, Object> model = new HashMap<String, Object>();
if (search.getId() != null) {
int id = Integer.parseInt(search.getId());
entityDemo = DBHelper.getEntityDemo(id);
model.put("entityDemo", entityDemo);
}
return new ModelAndView(new RedirectView(pageIWantToRedirectTo), model);
}
}
然后,在您的 JSP 中,您可以使用JSTL
并执行以下操作:${entityDemo.name}
,name
我假设EntityDemo
该类与适当的 一起具有的字段在哪里Getter
,这是public String getName(){return this.name;}
。
据我所知,Controller 方法不会返回整个对象,它们要么返回String
表示视图名称的值,要么返回\foo\bar\myPage.jsp
整个ModelAndView
对象(有两种类型的对象,其中一种具有portlet
全名,另一种具有全名)有servlet
。在这种情况下,你必须使用servlet
全名中的那个。为了清楚起见,当我说全名时,我指的是包含它所在的包的名称。如果我没记错的话,你正在寻找的那个for is inspringframework...servlet.ModelAndView
或类似的东西。
编辑:如果您想在提交时重定向,那么,您将需要制作 2 个控制器,一个将呈现表单,另一个将在提交表单后重定向。
关于您的 JSP 页面,您应该有一个 xml 文件名dispatcher-servlet.xml
。名称可能不同,具体取决于您在 中的配置web.xml
,但它们都具有<servletname>-servlet.xml
. 应该有一个名为的属性viewResolver
(虽然应该是这种情况,但某些 IDE 不会为您填充太多内容。另一方面,诸如 Netbeans 之类的 IDE 会为您设置大部分初始配置)。这是另一个作用于您的views
. 它的作用是自动在您view
在控制器中指定的名称之前和之后附加项目。通常它附加一个前缀pages/jsp/
和一个后缀.jsp
。因此,如果您有一个包含以下路径的页面pages/jsp/myPage.jsp
,那么您需要传入控制器的只是myPage
. 页面的完整路径将由视图解析器构建。如果您传入整个 URL,它仍会继续添加内容,因此即使您指定了正确的路径,仍然无法找到该页面。