我有一个从search.jsp中的表单获取ID的控制器。我希望它重定向到entitydemo.jsp,该实体应该能够访问EntityDemo并输出其属性。我怎么做?我是否需要使用重定向并以某种方式将EntityDemo设置为会话属性?@Controllerpublic class SearchEntityController { @RequestMapping(value = "/search", method = RequestMethod.GET) public EntityDemo getEntityDemoByID(@ModelAttribute("search") Search search, BindingResult result) { EntityDemo entityDemo = null; if (search.getId() != null) { int id = Integer.parseInt(search.getId()); entityDemo = DBHelper.getEntityDemo(id); } return entityDemo; }} 最佳答案 假设您有一个名为EntityDemo的类,其中的所有字段都具有Getters和Setters,我认为您应该这样做:@Controllerpublic 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一起使用的字段,这是。据我所知,Controller方法不会返回整个对象,它们要么返回表示视图名称的public String getName(){return this.name;}值(例如String),要么返回整个\foo\bar\myPage.jsp对象(有两种类型的对象,一种是他们的全名带有ModelAndView,另一个具有portlet。在这种情况下,您必须使用全名带有servlet的名称。为清楚起见,当我说全名时,我指的是如果内存对我有用,那么您要寻找的是servlet之类的东西。编辑:如果要在提交时重定向,那么,您将需要制作2个控制器,一个将呈现表单,另一个将在提交表单后重定向。关于您的JSP页面,您应该具有xml文件名springframework...servlet.ModelAndView。名称可能有所不同,具体取决于您在dispatcher-servlet.xml中的配置,但它们都具有web.xml的结构。应该有一个名为<servletname>-servlet.xml的属性(尽管情况确实如此,某些IDE不会为您提供太多的东西。另一方面,诸如Netbeans之类的IDE会为您设置大部分初始配置)。这是另一个对您的viewResolver起作用的控制器。它的作用是自动在您在控制器中指定的views名称之前和之后附加项目。通常,它会附加view前缀和pages/jsp/后缀。因此,如果您的页面具有以下路径.jsp,则需要传递给控制器的所有内容就是pages/jsp/myPage.jsp。页面的完整路径将由视图解析器构造。如果您输入整个URL,它仍会继续添加内容,因此即使您指定了正确的路径,也仍然找不到该页面。 09-12 09:22