是否可以从Spring中的scriptlet调用控制器方法

时间:2012-04-10 20:26:19

标签: java spring jsp spring-mvc scriptlet

我需要实现对我控制器中的方法的调用。但我想从scriptlet调用这个方法,我不知道该怎么做。我正在尝试将从服务器获取的数据导出为CSV。

这是我到目前为止的小脚本:

<%  
String csvDataIn = request.getParameter("exportCSVParam");
String csvFileName = request.getParameter("exportCSVFileName");
if (csvFileName == null || csvFileName == "") csvFileName = "export.csv";

String strHeader = "attachment; filename=" + csvFileName;
String contentType = "application/octet-stream";
response.setContentType(contentType);
response.addHeader("content-disposition",strHeader);

ServletOutputStream ostr = response.getOutputStream();    
String data=csvDataIn;//DATA GOES HERE;
ostr.write(data.getBytes("ISO-8859-1"));
ostr.flush();
ostr.close();
%>

假设我想调用我在控制器中的方法getDataAsCsv(),该方法返回一个字符串,其中包含我要在该文件中打印的CSV数据。应删除第1行和第2行(csvDataIncsvFileName),因为我不打算向此jsp发送参数。你是怎样做的?。如何将控制器bean与此scriptlet绑定。

我是春天新手,我还在学习这个。可能解决方案很简单,但我坚持这个。

1 个答案:

答案 0 :(得分:2)

你不能,因为你不应该。所有这些代码都应该放在控制器中。

(从技术上讲,你可以拥有一个JSTL函数并调用它,或者只是调用一个静态方法,甚至可以使用WebApplicationContextUtils.getRequiredWebApplicationContext(..).getBean(..)来获取控制器,但所有这些都会很丑陋)