Wicket getCallbackURL方法无法按预期工作

时间:2014-03-19 10:19:38

标签: javascript file-upload wicket

我已将我的应用程序迁移到wicket 6.14,并在文件上载字段中尝试使用以下实现获取文件名和文件大小

@Override
            public CharSequence getCallbackUrl() {
                CharSequence callBackUrl = super.getCallbackUrl();
                //File attribute of file input type is supported by certain browsers therefore conditionally returns the file size using js
                return callBackUrl +
                        "&filename=' + this.value + '&filesize=' + (function(undefined) {if($(\"<input type='file'>\").get(0).files !== undefined){ return $('#fileInput')[0].files[0].size}else{return 0;}})() + '";//"&filename=' + this.value + '";//
            }

但是当我尝试读取参数值时,它将返回文件名和jquery函数的值作为文件大小。

Request request = RequestCycle.get().getRequest();
                String filename = findFileName(request.getRequestParameters().getParameterValue("filename").toString());
                String fileSize = request.getRequestParameters().getParameterValue("filesize").toString();

我该怎么做?

2 个答案:

答案 0 :(得分:0)

评估js以获取文件大小并在事后从请求中读取它是没有意义的。此时文件已存在,您可以直接访问它。

解决方案的一个提示:覆盖getAttributes()并添加新的IAjaxCallListener。您可以在那里评估js并将文件大小放在隐藏的字段中(或者在getPrecondition()中检查文件大小,如果文件很大则返回false)。

答案 1 :(得分:0)

这个答案可能有助于实现更清洁的检票口。

https://stackoverflow.com/a/23555297/463918