Проблема с использованием Spring AOP с контроллером Java FXJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с использованием Spring AOP с контроллером Java FX

Сообщение Anonymous »

Я интегрировал Java FX с загрузкой Spring с помощью javafx-weaver-spring-boot-starter из net.rgielen. Я хочу выполнить некоторый код перед вызовом метода контроллера, но получаю исключение NullPointerException при доступе к аннотированным атрибутам @FXML.
У меня есть аннотация под названием FooterPaieConnStatus:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface FooterPaieConnStatus {

}

У меня есть аспект этой аннотации:
@Aspect
@Component
@Slf4j(topic = "AppLog")
public class FooterPaieConnStatusAspect {

@Before("@annotation(FooterPaieConnStatus)")
public void beforeMethod(JoinPoint joinPoint) {
// Get connection
boolean isConnSucessful = PaieDAOHelper.getInstance().testConn();
// Get the target object
Object target = joinPoint.getTarget();
if (target instanceof MyBaseTemplatedController controller) {
log.info("Defining footer paie connection status {} for MyBaseTemplatedController or it Subtype", isConnSucessful);
controller.getFooterController().setIsPaieConnectionSuccesFul(isConnSucessful);
}

}
}

И я использовал подобную аннотацию в своем контроллере FXML:
@FooterPaieConnStatus
public void synchroniserRubriques() {
actionWithLoading("Synchronisation des rubriques en cours...",
()->{
try {
mRubriqueService.fetchRubriques();
pRubriques.getPageFactory().call(0);
NotificationFactory.succesSync();
} catch (RuntimeException e) {
log.error(e.getMessage());
NotificationFactory.error("Etat de l'action", e.getMessage());
}
});
}

Вот начало контроллера FXML:
@Slf4j
@Getter
@Component
@FxmlView("/view/parametres_rubriques_comptes.fxml")
@RequiredArgsConstructor
public class ParamListMappingController extends MyBaseTemplatedController

И внутри у нас есть контроллер FXML:
@FXML
protected HeaderController headerController;
@FXML
protected FooterController footerController;

Но при загрузке контроллера FXML у меня возникает это исключение (headerController имеет значение null):
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at javafx.fxml@21/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1858)
at javafx.fxml@21/javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1726)
at javafx.base@21/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at javafx.base@21/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:232)
at javafx.base@21/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:189)
at javafx.base@21/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at javafx.base@21/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base@21/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at javafx.base@21/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.base@21/javafx.event.Event.fireEvent(Event.java:198)
at javafx.controls@21/javafx.scene.control.MenuItem.fire(MenuItem.java:459)
at javafx.controls@21/com.sun.javafx.scene.control.ContextMenuContent$MenuItemContainer.doSelect(ContextMenuContent.java:1415)
at javafx.controls@21/com.sun.javafx.scene.control.ContextMenuContent$MenuItemContainer.lambda$createChildren$12(ContextMenuContent.java:1368)
at javafx.base@21/com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:247)
at javafx.base@21/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at javafx.base@21/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:232)
at javafx.base@21/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:189)
at javafx.base@21/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at javafx.base@21/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at javafx.base@21/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base@21/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at javafx.base@21/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base@21/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at javafx.base@21/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base@21/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at javafx.base@21/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base@21/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at javafx.base@21/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.base@21/javafx.event.Event.fireEvent(Event.java:198)
at javafx.graphics@21/javafx.scene.Scene$MouseHandler.process(Scene.java:3984)
at javafx.graphics@21/javafx.scene.Scene.processMouseEvent(Scene.java:1890)
at javafx.graphics@21/javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2708)
at javafx.graphics@21/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:411)
at javafx.graphics@21/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:301)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at javafx.graphics@21/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:450)
at javafx.graphics@21/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:424)
at javafx.graphics@21/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:449)
at javafx.graphics@21/com.sun.glass.ui.View.handleMouseEvent(View.java:551)
at javafx.graphics@21/com.sun.glass.ui.View.notifyMouse(View.java:937)
at javafx.graphics@21/com.sun.glass.ui.mac.MacView.notifyMouse(MacView.java:127)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at com.sun.javafx.reflect.Trampoline.invoke(MethodUtil.java:72)
at jdk.internal.reflect.GeneratedMethodAccessor88.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at javafx.base@21/com.sun.javafx.reflect.MethodUtil.invoke(MethodUtil.java:270)
at javafx.fxml@21/com.sun.javafx.fxml.MethodHelper.invoke(MethodHelper.java:84)
at javafx.fxml@21/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1855)
... 40 more
Caused by: net.rgielen.fxweaver.core.FxLoadException: Unable to load FXML file file:/Users/macbook/Projets/MyReports/Realisation/myreports-desktop/target/classes/view/parametres_rubriques_comptes.fxml
at net.rgielen.fxweaver.core.FxWeaver.loadByViewUsingFxmlLoader(FxWeaver.java:400)
at net.rgielen.fxweaver.core.FxWeaver.loadByView(FxWeaver.java:385)
at net.rgielen.fxweaver.core.FxWeaver.lambda$load$0(FxWeaver.java:380)
at java.base/java.util.Optional.map(Optional.java:260)
at net.rgielen.fxweaver.core.FxWeaver.load(FxWeaver.java:380)
at net.rgielen.fxweaver.core.FxWeaver.load(FxWeaver.java:347)
at net.rgielen.fxweaver.core.FxWeaver.load(FxWeaver.java:320)
at com.gconcept.myreports.desktop.infra.fx.ViewManager.changeToWithFooterRefresh(ViewManager.java:104)
at com.gconcept.myreports.desktop.infra.fx.ViewManager.changeToParamMapping(ViewManager.java:73)
at com.gconcept.myreports.desktop.admin.controller.HeaderController.parametresMapping(HeaderController.java:66)
... 51 more
Caused by: javafx.fxml.LoadException:
/Users/macbook/Projets/MyReports/Realisation/myreports-desktop/target/classes/view/parametres_rubriques_comptes.fxml

at javafx.fxml@21/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2722)
at javafx.fxml@21/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2700)
at javafx.fxml@21/javafx.fxml.FXMLLoader.load(FXMLLoader.java:2547)
at net.rgielen.fxweaver.core.FxWeaver.loadByViewUsingFxmlLoader(FxWeaver.java:397)
... 60 more
Caused by: java.lang.NullPointerException: Cannot invoke "com.gconcept.myreports.desktop.admin.controller.HeaderController.getTitle()" because "this.headerController" is null
at com.gconcept.myreports.desktop.infra.core.MyBaseTemplatedController.setHeaderTitle(MyBaseTemplatedController.java:22)
at com.gconcept.myreports.desktop.business.controller.ParamListMappingController.initialize(ParamListMappingController.java:110)
at com.gconcept.myreports.desktop.business.controller.ParamListMappingController$$FastClassBySpringCGLIB$$bd8f4350.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
at com.gconcept.myreports.desktop.business.controller.ParamListMappingController$$EnhancerBySpringCGLIB$$c1c63611.initialize()
at javafx.fxml@21/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2670)


Подробнее здесь: https://stackoverflow.com/questions/787 ... controller
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Проблема с использованием Spring AOP с контроллером Java FX
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Проблема с использованием Spring AOP с контроллером Java FX
    Anonymous » » в форуме JAVA
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Проблема с использованием Spring AOP с контроллером Java FX
    Anonymous » » в форуме JAVA
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Как зашифровать и расшифровать конфиденциальное поле между контроллером веб-API и контроллером AngularJs?
    Anonymous » » в форуме C#
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous
  • Почему Spring AOP не может использовать фильтр безопасности Spring?
    Anonymous » » в форуме JAVA
    0 Ответы
    73 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»