让我的第一个Spring webapp工作

Mic*_*ael 2 java spring spring-mvc

我有一个控制器从search.jsp中的表单中获取ID.我希望它重定向到entitydemo.jsp,它应该能够访问EntityDemo并输出其属性.我怎么做?我是否需要使用重定向并以某种方式将EntityDemo作为会话属性?

@Controller
public 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;
  }
}
Run Code Online (Sandbox Code Playgroud)

npi*_*nti 6

假设你有一个名为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);
  }
}
Run Code Online (Sandbox Code Playgroud)

然后,在你的JSP,你可以用JSTL做这样的事情:${entityDemo.name},这里name是一个场,我假设EntityDemo类与适当在一起Getter,这是public String getName(){return this.name;}.

据我所知,Controller方法不会返回整个对象,它们要么返回String表示视图名称的值,要么返回\foo\bar\myPage.jsp整个ModelAndView对象(有两种类型的对象,其中一种具有portlet全名,另一种具有全名)有servlet.在这种情况下,你必须使用有一个servlet在它的全名,只是为了清楚起见,当我说的全名,我的意思是包括与其所在的包.如果没记错的话以及你正在寻找的一个名字因为是在springframework...servlet.ModelAndView或类似的东西.

编辑:如果你想在提交时重定向,那么,你将需要制作2个控制器,一个将呈现表单,另一个将在提交表单后重定向.

关于JSP页面,您应该有一个xml文件名dispatcher-servlet.xml.名称可能会有所不同,具体取决于您的配置web.xml,但它们都具有结构<servletname>-servlet.xml.应该有一个名为的属性viewResolver(尽管这应该是这种情况,某些IDE不会为您填充太多.另一方面,IDE等Netbeans为您设置了大部分初始配置).这是另一个控制你的人views.它的作用是自动附加view您在控制器中指定的名称前后的项目.通常它会附加前缀pages/jsp/和后缀.jsp.因此,如果您有一个包含以下路径的页面pages/jsp/myPage.jsp,那么您需要传入控制器的所有内容myPage.页面的完整路径将由视图解析器构建.如果您传入整个URL,它仍会继续添加内容,因此即使您指定了正确的路径,仍然无法找到该页面.