ho bisogno di creare un aspetto che trovo difficile da descrivere, quindi vorrei sottolineare le idee:Spring AOP pointcut con un certo argomento
- qualsiasi metodo all'interno del pacchetto (o qualsiasi sottopackage) di com. xy ..
- un metodo argomento è un'implementazione di un'interfaccia javax.portlet.PortletRequest
- ci sia qualcuno che mi più argomenti nel metodo
- essi possono essere in qualsiasi ordine
ho bisogno di un pointcut e di un "giro" consiglio con la PortletRequest data
Attualmente ho SMT come:
@Pointcut("execution(* com.x.y..*.*(PortletRequest,..)) && args(request,..)")
public void thePointcut(PortletRequest request) {
}
@Around("thePointcut(request)")
public Object theAdvice(ProceedingJoinPoint joinPoint, PortletRequest request) {
...
e ricevo un errore:
ERROR 10:47:27.159 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] o.s.web.portlet.DispatcherPortlet - Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet. mvc.HttpRequestHandlerAdapter': Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: w arning no match for this type name: PortletRequest [Xlint:invalidAbsoluteTypeName]
Qualsiasi aiuto molto apprezzato
Cordiali saluti, Dan
UPDATE il metodo che sto cercando di intercettare è:
in public class com.xyMainClass:
public String mainRender(Model model, RenderRequest request) throws SystemException
in public class com.xyasd.HelpClass :
public final void helpAction(ActionRequest request, ActionResponse response, Model model)
Di cource, voglio ottenere l'argomento che implementa PortletRequest, ovvero RenderRequest dal primo metodo e ActionRequest dal secondo.
saluti, Dan
Non riesco più a ottenere l'errore, ma il collegamento non rileva il metodo. Per essere più concreto, si prega di controllare il post aggiornato sopra. – Queequeg
Entrambi i metodi o solo il metodo mainRender. Il modo in cui hai definito il punto di taglio corrisponderà solo a quei metodi in cui il primo parametro è PortletRequest. Puoi provare qualcosa come args (.., request, ..) - non so se funzionerebbe.È inoltre possibile riordinare gli argomenti in modo da avere PortletRequest come primo argomento. – gkamal
Mi piacerebbe prendere qualsiasi metodo con un PortletRequest tra i parametri e avere accesso a quella richiesta. – Queequeg