【问题标题】:Wicket: Accessing the FileUploadFile selected fileWicket:访问 FileUploadFile 选择的文件
【发布时间】:2016-06-03 14:37:11
【问题描述】:

我在表单上有一个 FileUploadField。该组件将以下元素添加到 HTML

<input id="upload" type="file" name="fileUpload">

点击后,用户必须选择一个文件。我想知道该文件的名称是什么,选择后立即可以设置表单上其他组件的值。

我尝试将“onChange”AjaxEvenBehaviour 附加到 FileUploadField,但在请求参数中看不到文件名。

    FileUploadField fileUpload = new FileUploadField("fileUpload");

    form.add(fileUpload);

    fileUpload.add(new AjaxEventBehavior("onChange") {

        @Override
        protected void onEvent(AjaxRequestTarget target) {
            Request request = RequestCycle.get().getRequest();
            request.getRequestParameters();

        }

    });

有没有人成功做到这一点,你是怎么做到的?

【问题讨论】:

    标签: javascript java wicket


    【解决方案1】:

    您必须指示行为发送输入值:

    fileUpload.add(new AjaxEventBehavior("change") {
    
        @Override
        protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
        {
            super.updateAjaxAttributes(attributes);
    
            String value = "return {'value': Wicket.$(attrs.c).value}";
            attributes.getDynamicExtraParameters().add(value);
        }
    
        @Override
        protected void onEvent(AjaxRequestTarget target) {
            Request request = RequestCycle.get().getRequest();
    
            request.getRequestParameters().getParameterValue("value");
    
        }
    
    });
    

    【讨论】:

    • 我无法在 Wicket 6.x 上使用上述代码触发事件。当我将事件名称从“onChange”更改为“更改”时,事件触发开始工作。
    • 实际上现在所有的事件名称都必须在没有on-prefix的情况下指定,我调整了示例代码。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 2014-02-24
    • 2011-09-05
    • 1970-01-01
    相关资源
    最近更新 更多