最近在学习 struts2
想以它为基础整合一下 spring和 ibatis 弄个通用demo 以后做项目用
后来有想把 tiles 也搞进去 可以确出来一堆的问题 困扰了我 两天 最后终于解决了
好了 废话不多说 就把我遇到的问题和解决方法拿出来和大家分享一下
在参考 struts2 showcase 后 就试着把tiles 整合到自己的应用里
可是 没有想到 这么简单的几行配置到我的应用里就愣是 出了问题。
1. tiles.xml 配置 问题 :
把showcase 的 配置文件的内容拷贝过来 没有想到直接就出了问题
这是官方的配置 照抄过来 竟然报错 真是快 吐血了
看了一下提示说:
定义 Attribute 'title' not found. 而且是所有的 页面都没有找到
看了一下配置文件 没有问题呀 。于是就检查 jar 看看是不是 少包
看了一下 所有的包又都还在 于是乎 就觉 包的版本不对 就把 showcase 里的 jar 全弄了过来。 这下应该好了把
唉:结果问题依旧。
于是乎我就开始 baidu 和 谷歌 ,狂搜了大半天 也没有什么结果。 后来就 把 tiles 的文档也都下载下来。看了一下。发现:
dtd 的语法定义和官方的不一样 。
struts2 提供的 是
http://struts.apache.org/dtds/tiles-config_2_0.dtd
<put name="title" value="Tiles Showcase"/>
而tiles 自己的是
http://tiles.apache.org/dtds/tiles-config_2_0.dtd
<put-attribute name="title" value="Tiles Showcase"/>
于是就把 tiles 的配置改成了下面的配置 。运行了一下 果然很神奇,没有再报上面的错误
至此问题终于解决了。
回头想了一下 还真是有点可笑。竟然被这两行代码 弄得 晕头转向。也在心里"祝福"了一下开发 struts2 大大们
想以它为基础整合一下 spring和 ibatis 弄个通用demo 以后做项目用
后来有想把 tiles 也搞进去 可以确出来一堆的问题 困扰了我 两天 最后终于解决了
好了 废话不多说 就把我遇到的问题和解决方法拿出来和大家分享一下
在参考 struts2 showcase 后 就试着把tiles 整合到自己的应用里
可是 没有想到 这么简单的几行配置到我的应用里就愣是 出了问题。
1. tiles.xml 配置 问题 :
把showcase 的 配置文件的内容拷贝过来 没有想到直接就出了问题
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
"http://struts.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
<definition name="showcase.index" template="/tiles/layout.jsp">
<put name="title" value="Tiles Showcase"/>
<put name="header" value="/tiles/header.jsp"/>
<put name="body" value="/tiles/body.jsp"/>
</definition>
</tiles-definitions>
这是官方的配置 照抄过来 竟然报错 真是快 吐血了
看了一下提示说:
ERROR [http-8080-Processor24] - Error executing tag: Attribute 'title' not found.
org.apache.tiles.TilesException: Attribute 'title' not found.
at org.apache.tiles.jsp.taglib.InsertAttributeTag.render(InsertAttributeTag.java:112)
at org.apache.tiles.jsp.taglib.RenderTagSupport.execute(RenderTagSupport.java:171)
at org.apache.tiles.jsp.taglib.RoleSecurityTagSupport.doEndTag(RoleSecurityTagSupport.java:75)
at org.apache.tiles.jsp.taglib.ContainerTagSupport.doEndTag(ContainerTagSupport.java:80)
at org.apache.jsp.tiles.layout_jsp._jspx_meth_tiles_005fgetAsString_005f0(layout_jsp.java:105)
at org.apache.jsp.tiles.layout_jsp._jspService(layout_jsp.java:62)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
定义 Attribute 'title' not found. 而且是所有的 页面都没有找到
看了一下配置文件 没有问题呀 。于是就检查 jar 看看是不是 少包
看了一下 所有的包又都还在 于是乎 就觉 包的版本不对 就把 showcase 里的 jar 全弄了过来。 这下应该好了把
唉:结果问题依旧。
于是乎我就开始 baidu 和 谷歌 ,狂搜了大半天 也没有什么结果。 后来就 把 tiles 的文档也都下载下来。看了一下。发现:
dtd 的语法定义和官方的不一样 。
struts2 提供的 是
http://struts.apache.org/dtds/tiles-config_2_0.dtd
<put name="title" value="Tiles Showcase"/>
而tiles 自己的是
http://tiles.apache.org/dtds/tiles-config_2_0.dtd
<put-attribute name="title" value="Tiles Showcase"/>
于是就把 tiles 的配置改成了下面的配置 。运行了一下 果然很神奇,没有再报上面的错误
至此问题终于解决了。
回头想了一下 还真是有点可笑。竟然被这两行代码 弄得 晕头转向。也在心里"祝福"了一下开发 struts2 大大们