我正在尝试将portletrequest注入到我的方面类中
@Autowired(required = true)
private PortletRequest request;
@Before("execution(* de.ac.mis.dao.*.getSessionFactory())")
public void setUsername() {
System.out.println("Now I'm setting the username " + this.request);
}只给了我一个
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
No matching bean of type [javax.portlet.PortletRequest] found for dependency:
expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}异常
但是我可以自动连接HttpServletRequest --我是不是遗漏了什么?
发布于 2010-07-27 22:30:21
好的,在一些实验之后解决了它,也许它对其他人也有用
@Before("execution(* de.ac.mis.dao.acDynamicUserSessionFactory.getSessionFactory())")
public void setUsername(JoinPoint joinPoint) {
acDynamicUserSessionFactory dao = (acDynamicUserSessionFactory) joinPoint.getTarget();
RequestAttributes requestAttributes = RequestContextHolder.currentRequestAttributes();
String userName = "";
if (requestAttributes instanceof PortletRequestAttributes) {
PortletRequest request = ((PortletRequestAttributes) requestAttributes).getRequest();
userName = request.getRemoteUser();
} else if (requestAttributes instanceof ServletRequestAttributes) {
HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
userName = request.getRemoteUser();
}
dao.setUserName(userName);
this.log.debug("acUserSessionfactory was set for user: " + userName);
}这些配置的重要之处在于,请求资源(portlets或servlets)必须在spring上下文中运行,否则此时没有requestattribute可用。
发布于 2013-07-17 05:00:58
在看了JavaDocs之后,我选择了使用resolveReference,它声称:
至少:关键字"request“的HttpServletRequest/PortletRequest引用和关键字"session”的HttpSession/PortletSession引用。
示例代码:
RequestAttributes attrs = RequestContextHolder.getRequestAttributes();
// According to JavaDoc, PortletRequest should be available
PortletRequest request = (PortletRequest) attrs.resolveReference("request");https://stackoverflow.com/questions/3335439
复制相似问题