GWT将表单参数发送到servlet

时间:2011-11-30 09:55:20

标签: gwt

我试图捕获servlet中接下来两个突出显示的字段,我可以在其中获取上传的文件。

源代码与GWT FormSubmit class Javadoc

中显示的源代码相同
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();
    }
}));

我在servlet中使用这些代码行获取这些参数:

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 个答案:

答案 0 :(得分:5)

大多数servlet容器不会自动解码multipart/form-data,因此req.getParameter(或getParameterValues或类似的getter)不会返回任何内容。
您必须使用Apache Commons FileUploadJetty's MultiPartFilter等库来解码multipart/form-data有效负载。

作为旁注,req.getAttribute与从请求中获取数据无关;它用于在服务器组件之间传递与请求相关的数据(例如,在servlet容器和servlet之间,或者在过滤器和servlet之间)