在使用struts2的freemarker开发portlet时遇到问题

目前框架选型是struts2+spring+ibatis,表示层使用freemarker实现模板技术,使用portlet技术。

整个框架已经可以使用了, 但在使用freemarker的时候遇到一个问题。

使用struts2的sample运行没有问题,freemarker也可以使用,我自己加了一个action,但总是出现以下错误。

java.lang.IllegalStateException: Not allowed in a portlet
at org.apache.struts2.portlet.servlet.PortletServletRequest.getRequestURI(PortletServletRequest.java:173)
at org.apache.struts2.RequestUtils.getServletPath(RequestUtils.java:42)
at org.apache.struts2.views.util.ResourceUtil.getResourceBase(ResourceUtil.java:29)
at org.apache.struts2.views.freemarker.PortletFreemarkerResult.executeRenderResult(PortletFreemarkerResult.java:148)
at org.apache.struts2.views.freemarker.PortletFreemarkerResult.doExecute(PortletFreemarkerResult.java:111)
at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)


2008-07-03 17:11:51,781 ERROR [org.jboss.portal.portlet.container.org_apache_struts2_portlet_dispatcher_Jsr168Dispatcher] The portlet threw an exception
javax.portlet.PortletException: Error executing action freemarkerDirect
at org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher.serviceAction(Jsr168Dispatcher.java:452)
at org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher.render(Jsr168Dispatcher.java:321)
at org.jboss.portal.portlet.container.PortletContainer.invokeRender(PortletContainer.java:518)
at org.jboss.portal.portlet.container.PortletContainer.dispatch(PortletContainer.java:434)


奇怪的是,我就是把这个action的result类型改成velosity,它还是报freemarkerDirect错误。

有谁在portlet环境下使用struts2中的freemarker的,请指教。

你可能感兴趣的:(在使用struts2的freemarker开发portlet时遇到问题)