Spring MVC如何创建没有return(String)视图的控制器?

时间:2012-12-08 19:26:56

标签: spring controller

以下是我的样本控制器。

@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:”因为我正在使用tile,我必须删除之后我会在第一次加载时加载所有文件。

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

直接来自the documentation

  

支持的方法返回类型

     

以下是支持的返回类型:

     

[...]

     

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