Можно ли вызвать метод контроллера из скриптлета в Spring

Мне нужно реализовать вызов метода, который у меня есть в моем контроллере. Но я хочу вызвать этот метод из скриптлета и не знаю, как это сделать. Я пытаюсь экспортировать данные, которые я получаю с сервера, в 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 (csvDataIn, csvFileName) следует удалить, так как я не собираюсь отправлять параметры в этот jsp. Как ты это делаешь?. Как вы связываете bean-компонент контроллера с этим скриптлетом.

Я новичок в весне, и я все еще узнаю об этом. Вероятно, решение очень простое, но я застрял с этим.


person Juano7894    schedule 10.04.2012    source источник


Ответы (1)


Вы не можете, потому что вы не должны. Весь этот код должен идти в контроллер.

(технически вы можете иметь функцию JSTL и вызывать ее, или просто вызывать статический метод, или даже получить контроллер с WebApplicationContextUtils.getRequiredWebApplicationContext(..).getBean(..), но все это будет некрасиво)

person Bozho    schedule 10.04.2012
comment
Я понимаю вашу точку зрения, но: я могу использовать, например: ‹jsp:useBean id=PRepository scope=request class=com.ds.sh.portal.repositories.PRepository/›. Но я попробовал этот способ, и мне удалось связаться с PRepositoty, но bean-компонент не был правильно подключен к Spring. Итак, я думаю, мне нужно подключить jsp весной?? или создать контроллер только для этой страницы JSP, поэтому каждый раз, когда эта страница вызывается, она управляется этим контроллером? как ты это делаешь весной? Кажется, я немного запутался :С - person Juano7894; 12.04.2012
comment
да, сделать контроллер. Вы не должны писать какой-либо java-код в JSP. Вы можете проверить примеры приложений Spring, чтобы увидеть, как это делается правильно. - person Bozho; 13.04.2012