struts2 集成tiles 问题及解决办法

本文记录了一次尝试将Tiles整合进Struts2应用时遇到的配置问题及解决过程。作者通过对比官方文档和Tiles自身DTD定义的区别,最终解决了因属性标签不匹配导致的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在学习 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 大大们
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值