关于java:GWT表单将一个int传递给一个doGet()servlet

GWT form pass a int to a doGet() servlet

我有一个表单提交到servlet与doGet()方法。 我需要的是通过doGet()将id传递给servlet并在该方法中检索它。

到目前为止我尝试了:添加id作为查询字符串并在doGet中使用request.getParameter()。 我在doPost()及其工作中使用相同的方法。

客户端代码

1
2
3
4
5
6
downloadPanel = new FormPanel();
downloadPanel.setEncoding(FormPanel.ENCODING_MULTIPART);
downloadPanel.setMethod(FormPanel.METHOD_GET);

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

服务器端servlet

1
2
3
4
5
6
7
public class FileDownload extends HttpServlet {

private String entityId;

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

entityId = request.getParameter("entityId");

entityId为null。 如何将Id传递给doGet()请求?
至于在线查看示例,这应该适用于doPost(),因为它适用于doPost()。 谢谢,因为我很难过


在操作字段中忽略查询参数(提交带有查询字符串参数和隐藏参数的GET表单消失)。 您应该将其添加为隐藏参数(如何在gwt中的formPanel上添加隐藏数据):

1
2
3
4
5
6
7
8
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中传输。