【问题标题】:How to set maxFileSize for FileUploadFactory when using Joy?使用 Joy 时如何设置 FileUploadFactory 的 maxFileSize?
【发布时间】:2018-10-29 21:34:07
【问题描述】:

有人可以告诉我如何在 Jodd 中为 fileUploads 配置 maxFileSize,当使用 Joy 时?

我已经在 joy.props 中尝试过,甚至在 [joy.madvoc] 部分下也可以使用之前的工作:

madvocConfig.fileUploadFactory.maxFileSize=-1

但是没有运气:(

另一个问题是如何强制它,报错,没有它,得到:

java.lang.NullPointerException
com.mycircle.action.CircleAction.add(CircleAction.java:78)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
jodd.madvoc.ActionRequest.invokeActionMethod(ActionRequest.java:256)
jodd.madvoc.ActionRequest.lambda$createExecutionArray$1(ActionRequest.java:226)
jodd.madvoc.ActionRequest.invoke(ActionRequest.java:240)
jodd.madvoc.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:79)
jodd.madvoc.interceptor.ActionInterceptor.apply(ActionInterceptor.java:38)
jodd.madvoc.ActionRequest.invoke(ActionRequest.java:240)
jodd.joy.i18n.I18nInterceptor.intercept(I18nInterceptor.java:46)
jodd.madvoc.interceptor.ActionInterceptor.apply(ActionInterceptor.java:38)
jodd.madvoc.ActionRequest.invoke(ActionRequest.java:240)
jodd.madvoc.ActionRequest.lambda$createExecutionArray$0(ActionRequest.java:209)
jodd.madvoc.ActionRequest.invoke(ActionRequest.java:240)
jodd.madvoc.component.MadvocController.invoke(MadvocController.java:163)
jodd.madvoc.MadvocServletFilter.doFilter(MadvocServletFilter.java:109)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
jodd.decora.DecoraServletFilter.doFilter(DecoraServletFilter.java:144)

调试后,我发现这是由于 FileUploadFactory 和 AdaptiveFileUploadFactory 中定义的文件大小限制为 100240 字节。

我有一个@In FileUpload 图像;在 CircleAction 中,因此它变为 null。

【问题讨论】:

    标签: jodd


    【解决方案1】:

    这里是如何做到这一点:

    1. JoyMadvoc
    2. Madvoc 中获取FileUploader 组件 - 它是一个新组件,仅包含一个FileUploadFactory 实例。
    3. 使用它:)

    类似这样的:

    public class MyWebApplication extends JoyContextListener {
    
        @Override
        protected JoddJoy createJoy() {
            final JoddJoy joy = super.createJoy();
            joy.withWebApp(webApp -> {
                webApp.withRegisteredComponent(FileUploader.class, fileUploader -> {
                    AdaptiveFileUploadFactory adaptiveFileUploadFactory =
                        (AdaptiveFileUploadFactory) fileUploader.get();
                    adaptiveFileUploadFactory.setMaxFileSize(10000000);
                });
            });
            return joy;
        }
    
    }
    

    第二种方法是使用registerComponent 并简单地传递FileUploader 的实现。

    Atm,无法从 madvoc 配置中设置此值,但我会尽快解决。没有更多的madvocConfig - 您可以设置每个组件。所以你可以这样做:fileUploader.maxFileSize(修复后:)。

    【讨论】:

    • 谢谢伊戈尔,你让我开心!现在它完美地工作了。
    猜你喜欢
    • 2016-11-06
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 2022-08-03
    • 1970-01-01
    • 2015-04-18
    • 2017-01-05
    • 2020-11-06
    相关资源
    最近更新 更多