spring tiles

iwillrockyou 2007-05-06 08:07:03
毕业设计采用SSH做一个商城,本来计划五一前几天就把大体框架都搭上,但是在做最后一步用spring集成tiles的时候出现了问题(不添加spring之前测试通过)。。。卡在这个地方差不多两天了、这个问题没解决以下的都很难添加功能了。。。网上搜索到的资料也没法解决。。。
工程简介:
1.采用spring1.2+hibernate3.1+struts1.2(附加validation验证框架和tiles视图框架——就这里出问题!)。
2.struts和spring的继承采用了将struts action管理委托给spring框架。


好心人和想接分的好心人注意:能直接提供ssh跟tiles集成的例子的可直接拿走50分!
前提是符合我工程所采用的方案。
本帖分不够另开一贴!时间紧迫!感谢各位!


一下为给出部分关键代码:
1.Spring的配置文件/WEB-INF/classes/applicationContext.xml:
<!-- 一下为定义DAO类的spring配置 -->
<bean id="CustomersDAO"
class="com.easybuy.hibernate.dao.CustomersDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="customerService"
class="com.easybuy.hibernate.service.CustomerServiceImpl">
<property name="customersDAO">
<ref bean="CustomersDAO" />
</property>
</bean>

<!-- 以下为配置action由spring接管的配置 -->
<bean name="/reg" class="com.easybuy.struts.action.RegAction"
singleton="false">
<property name="customerService">
<ref bean="customerService" />
</property>
</bean>


<!--注意!!!关键部分!!1 以下为按照网上各种方法进行的配置tiles与spring的继承配置,尝试过很多种方案最终都失败 -->
<bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles.TilesConfigurer">
<property name="factoryClass">
<value>
org.apache.struts.tiles.xmlDefinition.I18nFactorySet
</value>
</property>
<property name="definitions">
<list>
<value>/WEB-INF/tiles-defs.xml</value>
</list>
</property>
</bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass">
<value>
org.springframework.web.servlet.view.tiles.TilesView
</value>
</property>
<property name="prefix">
<value>/jsp/common/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>

2.Struts的配置文件/WEB-INF/struts-config.xml:
<action
attribute="regForm"
name="regForm"
path="/reg"
scope="request"
validate="true"
input="/jsp/common/reg.jsp"
type="org.springframework.web.struts.DelegatingActionProxy"> <!-- 此处配置为spring的action代理类,非struts的action -->
<forward name="error" path="/jsp/common/reg.jsp" />
<forward name="succeed" path="/index.jsp" />
</action>

<!-- 在struts中配置tiles框架!!!! -->
<plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml"/>
<set-property property="moduleAware" value="true"/>
<set-property property="definitions-parser-validate" value="true" />
</plug-in>
<!-- 在struts中与spring集成的配置!!!-->
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml"/>
</plug-in>
<!-- 在struts中配置validaton框架 -->
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" property="pathnames" />
</plug-in>

3.tiles的配置文件/WEB-INF/tiles-defs.xml:
<tiles-definitions>
<definition name ="base-definitions" path="/jsp/layout/layout.jsp">
<put name="title" value="Tiles Library Documentation"/>
<put name="header" value="/jsp/common/header.jsp"/>
<put name="footer" value="/jsp/common/footer.jsp"/>
<put name="body" value=""/>
</definition>
<definition name="index-definitions" extends="base-definitions">
<put name="body" value="/jsp/common/body.jsp"></put>
</definition>
<definition name="reg-definitions" extends="base-definitions">
<put name="body" value="/jsp/common/regbody.jsp"></put>
</definition>
</tiles-definitions>

异常信息:
exception

javax.servlet.ServletException: Can't get definitions factory from context.
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.jsp.common.reg_jsp._jspService(reg_jsp.java:76)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

javax.servlet.jsp.JspException: Can't get definitions factory from context.
org.apache.struts.taglib.tiles.InsertTag.processDefinitionName(InsertTag.java:577)
org.apache.struts.taglib.tiles.InsertTag.createTagHandler(InsertTag.java:476)
org.apache.struts.taglib.tiles.InsertTag.doStartTag(InsertTag.java:438)
org.apache.jsp.jsp.common.reg_jsp._jspx_meth_tiles_insert_0(reg_jsp.java:156)
org.apache.jsp.jsp.common.reg_jsp._jspx_meth_html_html_0(reg_jsp.java:117)
org.apache.jsp.jsp.common.reg_jsp._jspService(reg_jsp.java:67)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

好心人和想接分的好心人注意:能直接提供ssh跟tiles集成的例子的可直接拿走50分!
前提是符合我工程所采用的方案。
本帖分不够另开一贴!时间紧迫!感谢各位!
...全文
879 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
吐司vivi 2008-06-12
  • 打赏
  • 举报
回复
帮顶!!没遇到过
wwhhmm8866 2008-06-11
  • 打赏
  • 举报
回复
换spring2.0试试吧 以前用spring2+hibernate3.2+struts1.3 没出现过这种问题
nisersent 2008-06-10
  • 打赏
  • 举报
回复
路过,学习中。。。
我用过SSH,没出现过这种问题。。。
spring的配置文件中不对tiles管理,只在struts的配置文件中配置一下,
没出过问题。。。
hahaliujun 2008-06-09
  • 打赏
  • 举报
回复
你好!
我在学习时也遇到了这样的问题,和你一模一样
但还是没有解决出来啊!
请问你解决了吗?
好痛苦啊!
iwillrockyou 2007-05-06
  • 打赏
  • 举报
回复
很奇怪我发现这个问题是jsp放到目录下WebRoot/jsp/common/的缘故,
但是只要我把所有的jsp都放到web工程目录下就ok了。。。
iwillrockyou 2007-05-06
  • 打赏
  • 举报
回复
已经另开一贴:
http://community.csdn.net/Expert/topic/5512/5512878.xml?temp=.1414759

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧