Форма GWT передает int сервлету doGet () - PullRequest
0 голосов
/ 24 января 2019

У меня есть отправка формы сервлету с помощью метода doGet (). Что мне нужно, это передать идентификатор сервлету через doGet () и получить его этим методом.

То, что я пробовал до сих пор: добавление идентификатора в виде строки запроса и использование request.getParameter () в doGet. Я использую этот же метод в doPost () и он работает.

код клиента

downloadPanel = new FormPanel();
downloadPanel.setEncoding(FormPanel.ENCODING_MULTIPART);
downloadPanel.setMethod(FormPanel.METHOD_GET);

downloadPanel.setAction(GWT.getModuleBaseURL()+"downloadfile" + "?entityId="+ 101);
downloadPanel.submit();  

сервлет на стороне сервера

public class FileDownload extends HttpServlet {

private String entityId;

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

entityId = request.getParameter("entityId");

entityId равен нулю. Как я могу передать идентификатор в запрос doGet ()? Что касается просмотра примеров в сети, это должно работать так, как работает для doPost () как есть. Спасибо, что я в тупике

1 Ответ

0 голосов
/ 25 января 2019

Параметры запроса игнорируются в поле действия ( отправка формы GET с параметрами строки запроса и скрытыми параметрами исчезает ).Вы должны добавить его в качестве скрытого параметра ( как я могу добавить скрытые данные на моей панели формы в gwt ):

FormPanel form = new FormPanel();
form.setEncoding(FormPanel.ENCODING_URLENCODED); // use urlencoded
form.setMethod(FormPanel.METHOD_GET);
FlowPanel fields = new FlowPanel(); // FormPanel only accept one widget
fields.add(new Hidden("entityId", "101")); // add it as hidden
form.setWidget(fields); 
form.setAction(GWT.getModuleBaseURL() + "downloadfile");
form.submit(); // then the browser will add it as query param!

Если вы не используете urlencoded, он будет доступен с помощьюrequest.getParameter(…) тоже, но он будет передан в теле вместо URL.

...