现在的位置: 首页 > 综合 > 正文

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

2013年01月01日 ⁄ 综合 ⁄ 共 1460字 ⁄ 字号 评论关闭

目前框架选型是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的,请指教。

抱歉!评论已关闭.