打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
:tapestry模版文件中普通图片资源的路径问题
原文:http://www.matrix.org.cn/thread.shtml?topicId=4d26041c-4f01-11db-9332-6133dc7ca7e4&forumId=51&page=1#3一般用dreamweaver制作网页模版的时候图片和样式表等资源的路径都写成相对路径的格式,可是当把模版文件挂到t4的应用程序环境里运行的时候会出现模版文件里这些资源的相对路径所影射到的文件无效的问题,这样说可能太抽象了举一个例子说明:目录结构如下:webRoot|+----Home.html|+---+/image| || +----logo.gif|+---+/pub| || +-----Login.html|+---+/admin | +-----MyPage.html(这里有一个
)Login页面中验证用户登录,登录成功后会把MyPage页返回。这时问题就出来了,MyPage里的logo.gif没能够显示出来;用户在Login中提交表单的目的地是/test/app(应用程序的servlet叫"test"),所以登录成功后浏览器地址栏上的url是http://localhost:8080/test/app而所展示的页面却是/admin/Mypage,在浏览器中查看页面的源代码发现logo的地址是http://localhost:8080/image/logo.gif。很显然这不是logo.gif的地址,当然显示不出来了。但是把logo在page specification文件中定义为asset,通过在页面中使用Tapestry的Image对象则没有问题。可是有的时候一个设计精美的页面是由很多图片组成的(有时候有几百个)总不能把所有的图片都拿到page specification文件中定义一下吧,小弟刚刚接触T4不久,我相信一定有更简单高效的解决办法,并且能够保证在只是浏览模版文件的时候也能保证这些普通图片正常显示。请高人执教! 1. 首先对你的 http://localhost:8080/test/app 我想说,/test应该是上下文路径,而/app才是servlet路径。2. 其次,在T中整个项目相当于一个servlet,也就是说,在T中不管你再怎么分层目录,如,/test/app?service=page&page=admin/MyPage,相对于传统url来说,它的路径始终是/test/app,问号后面的对于传统url只不过是参数而已,而且访问一个servlet就相当于访问一个普通页面,所以我们且把/test/app当作/test/app.html,那么app.html的当前目录就是/test。刚才说过整个T就是一个servlet,你这里是app,不管问号后面的杂7杂8,访问任何页面,相对于传统url,实际上相当于一直在访问同一个servlet app,访问/test/app?service=page&page=admin/MyPage其实也是在访问/test/app,所以你的
自然是 http://localhost:8080/image/logo.gif 因为app当前目录为/test,上级目录不用我说了吧。3. 所以你应该写成
就可以了。记住,不管位于哪里的任何html模板,在运行时,都只是作为app servlet的一个参数而已(相对于传统url来说),只要把你在编写的任何html模板,当作在编写app servlet就不会出错了,再进一步把servlet /test/app当作/test/app.html就更形象了。4. 如果你觉得别扭,那就别用相对路径。用上下文路径就行了。如
你的image目录肯定在/test上下文路径下吧(也就是你的webRoot)。5. 初学,错误出请高手指点,谢谢 i'm JaeJae!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Tapestry4 Friendly URLs
Tapestry开发Wap应用程序(原创)
精美LOGO模版
C#网站发布的选择
ASP.NET应用程序的部署--兼谈aspnet
servlet 几种路径
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服