2013-11-26 191 views
2

当我的操作返回ModelAndView时,是否可以返回字符串?当返回类型是ModelAndView时返回字符串

public ModelAndView register(....) { 

    ModelAndView mav = new ModelAndView(...); 


    if(// some wierd case) { 
     // halt and return a string response 
    } 


    return mav; 
} 

这不是一个正常的情况下,我知道我应该重定向到另一个页面,并显示某种信息,但是这是一个不寻常的情况下我真的不希望这样做,或者至少我想知道如果我有这个选择来做到这一点。

+2

你认为春天对绳子有什么作用?重定向到它?把它当作答复者? (另外,在同一个句子中输入“spring”和“string”出奇地困难) – Taylor

+0

你有没有解决过这个问题? –

+0

我想在ModelAndView中添加我自己的文本字符串并显示它? – powder366

回答

0

您可以在您的方法上使用注释@ResponseBody

+0

但通常我想使用ModelAndView来显示,在这种情况下我怎么能把responsebody? – Blankman

+0

@Blankman如何调用另一个方法使用Ajax并返回'String'? – Alex

0

如果您要返回一个ModelAndView,您是否使用服务器端的值填充您的视图。你可以返回字符串作为ModelAndView的一部分吗?

mav.addObject("myString", "this is the string for the weird case"); 

其他选项是让HttpServletResponse对象的PrintWriter的或ServletOutputStream的进出写入字符串,然后返回一个空的ModelAndView。

0

可以将返回类型提到String而不是ModelAndView。返回的字符串名称应该是jsp文件的名称。

1

我会抛出异常。你可以为这种情况创建一个Exception的子类 - 一个可以容纳和回答一个字符串的子类。通过这种方式,你可以在特殊情况下返回一个字符串,但大多数时候回答一个ModelAndView。

public ModelAndView register(....) throws WierdCaseException { 

    ModelAndView mav = new ModelAndView(...); 


    if(// some wierd case) { 
     // halt and return a string response 
     throw new WierdCaseException("the string to be returned"); 
    } 


    return mav; 
} 
相关问题