GWT Отправить параметры формы сервлету - PullRequest
3 голосов
/ 30 ноября 2011

Я пытаюсь поймать следующие два выделенных поля в сервлете, где я могу получить загруженный файл.

Исходный код точно такой же, который показан в GWT FormSubmit classJavadoc

form.setEncoding(FormPanel.ENCODING_MULTIPART);
form.setMethod(FormPanel.METHOD_POST);

// Create a panel to hold all of the form widgets.
VerticalPanel panel = new VerticalPanel();
form.setWidget(panel);

// Create a TextBox, giving it a name so that it will be submitted.
final TextBox tb = new TextBox();
tb.setName("WorkTitle");
tb.setValue("WorkTitle");

panel.add(tb);

// Create a ListBox, giving it a name and some values to be associated
// with
// its options.
ListBox lb = new ListBox();
lb.setName("listBoxFormElement");
lb.addItem("foo", "fooValue");
lb.addItem("bar", "barValue");
lb.addItem("baz", "bazValue");
panel.add(lb);

// Create a FileUpload widget.
FileUpload upload = new FileUpload();
upload.setName("uploadFormElement");
panel.add(upload);

// Add a 'submit' button.
panel.add(new Button("Submit", new ClickListener() {
    public void onClick(Widget sender) {
        form.setAction(GWT.getModuleBaseURL()+"uploadWork");
        form.submit();
    }
}));

Я получаю эти параметры с этими строками кода в моем сервлете:

protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
    System.out.println("ENTRAA BIENNNN");
    System.out.println(" ___ELEMENTO1" + req.getAttribute("WorkTitle"));
    System.out.println(" ___ELEMENTO3" + req.getParameterValues("WorkTitle"));

Но оба возвращают меня NULL.

Как я мог это сделать?

TIA!

1 Ответ

5 голосов
/ 30 ноября 2011

Большинство контейнеров сервлетов не декодируют multipart/form-data автоматически, поэтому req.getParameter (или getParameterValues или аналогичные методы получения) ничего не вернут.
Вам придется использовать такую ​​библиотеку, как ApacheCommons FileUpload или Jetty's MultiPartFilter для декодирования multipart/form-data полезной нагрузки.

В качестве примечания, req.getAttribute не имеет ничего общего с получением данных из запроса;используется для передачи данных, связанных с запросом, между компонентами сервера (например, между контейнером сервлета и сервлетами или между фильтром и сервлетом)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...