Как установить maxFileSize для FileUploadFactory при использовании Joy? - PullRequest
0 голосов
/ 30 октября 2018

Может кто-нибудь сообщить мне, как настроить maxFileSize для файловых загрузок в Jodd при использовании 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)

После отладки я выяснил, что это связано с ограничением размера файла в 100240 байт, определенным в FileUploadFactory и AdaptiveFileUploadFactory.

У меня есть изображение @In FileUpload; в CircleAction, и это становится нулевым из-за этого.

1 Ответ

0 голосов
/ 01 ноября 2018

Вот как это сделать:

  1. с Joy добраться до Madvoc
  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.

Атм, невозможно установить это значение из конфига madvoc, но я скоро это исправлю. Больше нет madvocConfig - вместо этого вы можете установить каждый компонент. Таким образом, вы сможете сделать это так: fileUploader.maxFileSize (после исправления:).

...