2013-07-26 2 views
0

Я использую Spring 3. В моем JSP У меня есть формаSpring 3, передать данные из контроллера в JSP

<form action='componentAction.html' method='POST'> 
    <input type='hidden' id='action_' name='componentAction' value=""/> 
</form> 

Величина изменения действия формы на либо начать, остановить или приостановить.

У меня также есть 3 кнопки: запуск, остановка и пауза. При нажатии одной из этих кнопок изменяется значение формы.

<input type="button" value="Start" onclick="changeFormValueAndSubmit('start')"> 
<input type="button" value="Stop" onclick="changeFormValueAndSubmit('stop')"> 
<input type="button" value="Pause" onclick="changeFormValueAndSubmit('pause')"> 

Я хотел был бы иметь возможность послать значение формы моему контроллеру через ajax-вызов после того, как произойдет пресса.

Может кто-нибудь, пожалуйста, покажет мне правильный способ сделать это? Alsos, могу ли я использовать POST или GET?

Я попытался следующие учебные пособия, такие как
http://www.raistudies.com/spring/spring-mvc/ajax-spring-mvc-3-annonations-jquery/
http://hmkcode.com/spring-mvc-json-json-to-java/
http://java.dzone.com/articles/using-spring-mvc%E2%80%99s
Но я с треском провалились.

Спасибо всем за их проработку заранее!

+0

Можете вы показать нам, что вы пробовали? – Niranjan

+0

Все ссылки, которые я разместил, я попробовал. Однако они не работали, потому что я не мог получить значение, которое я отправлял. – Quillion

ответ

1

Использование JQuery вы можете использовать следующие в вашей changeFormValueAndSubmit функции()

function changeFormValueAndSubmit(buttonName) { 
    var formData = $('form').serialize(); 
    jQuery.post('/path', formData, function(d) { 
     // handle response 
    }); 

    ... 
} 

Примечание: что в этом примере, JQuery будет посылать все поля данных в вашей форме.

Включите фреймворк jquery в свой JSP, а также весомый метод контроллера для обработки POST.

POST предпочтительнее, чем GET.

На стороне сервера с использованием Spring 3 аннотаций, что-то вроде

@Controller 
public class ExampleController { 

    @ResponseBody 
    @RequestMapping(value = "/path", method=RequestMethod.POST) 
    public String post(@RequestParam String componentAction) { 
     // do work 
     ... 
     return "OK"; // depends on what you need to send back... 
    } 


} 

Вы должны включить MVC аннотаций. См. http://static.springsource.org/spring/docs/3.0.x/reference/mvc.html#mvc-annotation-driven

+0

Это потрясающе. Можете ли вы также показать мне, как я получу его на стороне сервера внутри контроллера? – Quillion

+0

См. Обновление для ответа –

+0

Спасибо :) Это то, что я искал и что еще не учили, никогда не говорили – Quillion

0

POST или GET определит, отправлены ли данные формы в URL (GET) или встроены в тело сообщения HTTP-запросов (POST). Поскольку это вызов ajax, URL-адрес не будет отображаться непосредственно пользователю, но в любом случае пользователь может увидеть содержимое запроса в инструментах разработчика браузера.

Самый простой способ получить весной направить трафик на ваш JSP, как например:

<servlet-mapping> 
    <servlet-name>MyJSPServlet</servlet-name> 
    <url-pattern>/urlFromOutside</url-pattern> 
</servlet-mapping> 

<servlet> 
    <servlet-name>MyJSPServlet</servlet-name> 
    <jsp-file>/pathToJspFile/MyJspFile.jsp</jsp-file> 
</servlet> 

Чтобы получить данные формы в файле JSP, у вас есть доступ к объекту запроса и может получить параметры например:

<%= request.getParameter("componentAction") %> 
Смежные вопросы