在Wicket Ajax行为中访问多部分表单数据

时间:2016-04-21 11:56:19

标签: ajax wicket multipart behavior

我目前正在使用Wicket和jQuery插件来裁剪图片(" croppic")并且需要使用ajax我的后端来裁剪图片。数据以多部分格式发送。

My Wicket后端是" onRequest"的一个Ajax行为。方法,我不知道如何检索多部分数据。

@Override
public void onRequest() {
    String json = "{}";
    boolean hasError = false;

    RequestCycle cycle = getComponent().getRequestCycle();
    IRequestParameters parameters =     cycle.getRequest().getPostParameters();

此代码只能访问经典的POST变量,但不能用于多部分表单数据(值为空)。

你知道怎么做吗?

PS:这个帖子很有用,但对我来说不可理解:Wicket 6 - Capturing HttpServletRequest parameters in Multipart form?

身体有效负载:

------WebKitFormBoundarykpVsQAYFGJywlAZd
Content-Disposition: form-data; name="imgUrl"

https://scontent.xx.fbcdn.net/hprofile-xpf1/t31.0-        1/c0.0.1536.1536/13055008_225242101175595_5770204993752392511_o.jpg
------WebKitFormBoundarykpVsQAYFGJywlAZd
Content-Disposition: form-data; name="imgInitW"

1536
------WebKitFormBoundarykpVsQAYFGJywlAZd
Content-Disposition: form-data; name="imgInitH"

1536
------WebKitFormBoundarykpVsQAYFGJywlAZd
Content-Disposition: form-data; name="imgW"

500
------WebKitFormBoundarykpVsQAYFGJywlAZd
Content-Disposition: form-data; name="imgH"

500
------WebKitFormBoundarykpVsQAYFGJywlAZd
Content-Disposition: form-data; name="imgY1"

等...

2 个答案:

答案 0 :(得分:1)

尝试:

WebRequest webRequest = (WebRequest) cycle.getRequest();
MultipartServletWebRequest multiPartRequest = webRequest.newMultipartWebRequest(getMaxSize(), "ignored");
multiPartRequest.parseFileParts();
IRequestParameters params = multiPartRequest.getRequestParameters();

答案 1 :(得分:0)

这是我的最终代码有效......非常难看,但它运作正常。

@Override
public void onRequest() {
    boolean hasError = false;
    IRequestParameters parameters = null;
    RequestCycle cycle = RequestCycle.get();
    ServletWebRequest webRequest = (ServletWebRequest) cycle.getRequest();

    try {
        MultipartServletWebRequest multiPartRequest = webRequest.newMultipartWebRequest(Bytes.kilobytes(10), "ignored");
        multiPartRequest.parseFileParts();
        parameters = multiPartRequest.getRequestParameters();

    } catch (FileUploadException e) {
        hasError = true;
    }

之后您可以轻松致电:

parameters.getParameterValue("you_param");