【问题标题】:Spring MVC how to create controller without return (String) view?Spring MVC如何创建没有返回(字符串)视图的控制器?
【发布时间】:2014-01-07 22:14:33
【问题描述】:

以下是我的示例控制器。

@RequestMapping(value = "/validate", method = RequestMethod.POST)
public String validatePage1 (@ModelAttribute("page1")
                        Page1 pg1, BindingResult result) {

    System.out.println("Value1:" + pg1.getVal1() + 
                "Value2:" + pg1.getVal2());

    return "page2"; // I don't want to take any action (page navigation) here
}

@RequestMapping("/page1")
public ModelAndView pageShow() {

    return new ModelAndView("page1", "command", new Page1());
}

现在的问题是,当Spring框架调用方法(validatePage1)时,我不想在客户端采取任何行动,怎么办?

实际上我在加载时已经在客户端加载了所有需要的页面(以避免重复加载页面),所以我不想在客户端进行任何页面导航操作,我只想做“数据绑定”在服务器端完成我的业务逻辑。

当我在“validatePage1()”中返回“”空字符串时,Spring 框架抛出异常“请求处理失败;嵌套异常是 org.apache.tiles.definition.NoSuchDefinitionException:”,因为我使用的是瓷砖,所以我必须删除因为我是在第一次加载自己时加载所有文件,所以稍后会进行切片配置。

【问题讨论】:

    标签: spring controller


    【解决方案1】:

    您可以将方法设置为返回void,并按照here 的建议使用@ResponseBody 对其进行注释。无需处理HttpServletResponse等。

    【讨论】:

      【解决方案2】:

      直接来自the documentation:

      支持的方法返回类型

      以下是支持的返回类型:

      [...]

      如果方法本身处理响应(通过直接编写响应内容,为此目的声明 ServletResponse / HttpServletResponse 类型的参数)或视图名称应该通过 RequestToViewNameTranslator 隐式确定(不声明响应)则无效处理程序方法签名中的参数)。

      【讨论】:

      • 是的,我已经尝试过使用 'void' 但我得到了如下异常:
      • 消息请求处理失败;嵌套异常是 org.apache.tiles.definition.NoSuchDefinitionException: validate org.springframework.web.util.NestedServletException: 请求处理失败;嵌套异常是 org.apache.tiles.definition.NoSuchDefinitionException: validate org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:625) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:536) javax.servlet.http.HttpServlet.service(HttpServlet.java:647) javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
      • 不要随意尝试。阅读我的回答中的 4 行文档。尤其是“通过直接编写响应内容,为此目的声明 ServletResponse / HttpServletResponse 类型的参数”的部分。
      猜你喜欢
      • 1970-01-01
      • 2015-12-12
      • 1970-01-01
      • 1970-01-01
      • 2017-01-16
      • 2021-08-14
      • 1970-01-01
      • 2011-12-02
      • 1970-01-01
      相关资源
      最近更新 更多