分享

:tapestry模版文件中普通图片资源的路径问题

 最强火枪手 2009-02-17
原文:http://www./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!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约