从Spring控制器转发到JSP文件

3

我正在尝试将一个Spring-MVC控制器方法中的请求转发到一个JSP页面。

我的控制器方法应该处理Ajax请求。通过将请求转发到JSP文件,我希望Ajax请求的响应是JSP文件的(动态)HTML输出内容

我尝试的方法:

public ModelAndView ajaxResponse(HttpServletRequest request, HttpServletResponse response) {

    request.setAttribute("command", "hello world");

    request.getRequestDispatcher("jspfile").forward(request, response);
    return null;    
}

这个失败了,我得到了“HTTP状态404”。

在tiles配置文件中,“jspfiles”被定义为指向实际的jsp文件。当我运行以下方法时:

public String ajaxResponse(HttpServletRequest request, HttpServletResponse response) {

    request.setAttribute("command", "hello world");
    return "jspfile";
}

我通过Ajax响应获得文件内容,但是该文件中的JSP标签未经过解析 - 因此我得出我的tiles定义是正确的结论 (???)。

我的JSP文件如下:

<%=command%>

我希望我的Ajax响应能够返回字符串“hello world”。

你能否给我展示一个实现此目的的示例代码呢?

具体来说,我需要了解:

  1. 控制器方法的返回类型应该是什么?

  2. 如果有影响的话,控制器方法的实际返回值应该是什么?

  3. 我应该如何在request.getRequestDispatcher(...)中设置JSP文件路径,以便其能够被识别?


1
你的第二个控制器看起来没问题 - 如果你浏览调用该方法的URL而不是发出ajax请求,会发生什么?JSP是否正确显示? - jeff
1个回答

3
请看这里的控制器示例:http://maestric.com/doc/java/spring/mvc。尽管这个示例有点过时了,但你必须做的事情的概念仍然相同。Spring 3有基于注释的方法来完成该示例中的许多内容。

你是正确的。实际上,在我的情况下,我不需要使用 request.getRequestDispatcher("jspfile").forward(request, response); - 因为转发到 jsp 的操作已经被框架自动完成了。 - rapt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接