[Tapestry4] 如何得到存放在src里的图片
eric2002cn
2008-02-27
开发一个自家义组件,组件中包含一些图片,因为要将该组件打成jar包,所以把图片放在src(class)下面,而不是放在webroot下面,怎样得到这些图片啊
看了DatePicker 是这样实现的,可是自己却无法实现 希望各位知道的告诉我一下好吗,谢谢了 |
|
tapestry
2008-02-28
src中放在同一个包里,eclipse自动编译到class中,再将class打包就可以了吧。
|
|
eric2002cn
2008-02-28
Tapestry 大哥误会我的意思了,我是说在组件的模板里如何让图片显示出来
把图片放在src下面,模板里只能显示是一个X号,无法显示,放在webroot下面就能显示出来,不知什么原因,我是又先要图片在模板里能正确显示,然后再打包的 不知怎么实现,请Tapestry大哥,还有各位知道的再给看一下,谢谢了! 我把代码贴出来吧 java类 public abstract class Pagenaction extends BaseComponent { public abstract String getPreIcon(); public abstract String getNextIcon(); public abstract String getStartIcon(); public abstract String getEndIcon(); @Parameter(name = "model", required = true) public abstract PageModel getPageModel(); public abstract void setPageModel(PageModel model); @Parameter(name = "display", required = false, defaultValue = "ognl:false") public abstract boolean getDisplay(); public int gotoNum = 0; public void doPre() { int i = (Integer) this.getPage().getRequestCycle() .getListenerParameters()[0]; i--; if (i >= 1) { getPageModel().setCurrentPage(i); trigger(); } } @Parameter(name = "listener", required = false) public abstract IActionListener getListener(); public abstract ListenerInvoker getListenerInvoker(); public void trigger() { IActionListener listener = getListener(); if (listener == null) listener = getContainer().getListeners().getImplicitListener(this); getListenerInvoker().invokeListener(listener, this, this.getPage().getRequestCycle()); } public void doFirst() { if (getPageModel().getCurrentPage() != 1) { getPageModel().setCurrentPage(1); trigger(); } } public void doNext() { // System.out.println("Pagenaction currentPage is -->" // + getPageModel().getCurrentPage()); int i = (Integer) this.getPage().getRequestCycle() .getListenerParameters()[0]; i++; if (getPageModel().getCurrentPage() < getPageModel().getPageCount()) { getPageModel().setCurrentPage(i); trigger(); } } public void doLast() { if (getPageModel().getCurrentPage() != getPageModel().getPageCount()) { getPageModel().setCurrentPage(getPageModel().getPageCount()); trigger(); } } public void doGoto() { System.out.println(gotoNum); if (getPageModel().getCurrentPage() != gotoNum) { if (gotoNum >= 1 && gotoNum <= getPageModel().getPageCount()) { getPageModel().setCurrentPage(gotoNum); trigger(); } } } public int getGotoNum() { return getPageModel().getCurrentPage(); } public void setGotoNum(int gotoNum) { this.gotoNum = gotoNum; } } .jwc <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE component-specification PUBLIC "-//Apache Software Foundation//Tapestry Specification 4.0//EN" "http://tapestry.apache.org/dtd/Tapestry_4_0.dtd"> <component-specification allow-informal-parameters="no" allow-body="no" class="com.snail.tapestry.components.Pagenaction"> <inject property="listenerInvoker" object="infrastructure:listenerInvoker"/> <parameter name="preIcon" default-value="literal:/app?service=asset&path=/com/snail/tapestry/components/images/pre.gif" /> <parameter name="nextIcon" default-value="literal:/app?service=asset&path=/com/snail/tapestry/components/images/next.gif" /> <parameter name="startIcon" default-value="literal:/app?service=asset&path=/com/snail/tapestry/components/images/start.gif" /> <parameter name="endIcon" default-value="literal:/app?service=asset&path=/com/snail/tapestry/components/images/end.gif" /> </component-specification> .html <table style="width: 550px; height: 20px; background-color: #F0F0F0;"> <tr> <td style="width: 100px; height: 20px;"> <span jwcid="@If" condition="ognl:pageModel.currentPage>1"> <a jwcid="@DirectLink" listener="listener:doFirst"> <img jwcid="@Any" src="ognl:startIcon" /> </a> <a jwcid="@DirectLink" listener="listener:doPre" parameters="ognl:pageModel.currentPage"><img jwcid="@Any" src="ognl:preIcon" alt="上一页"/> </a> </span> <span jwcid="@Else"> 首页 上一页 </span> </td> <td style="width: 100px; height: 20px;"> <span jwcid="@If" condition="ognl:pageModel.pageCount>pageModel.currentPage"> <a jwcid="@DirectLink" listener="listener:doNext" parameters="ognl:pageModel.currentPage"> <img jwcid="@Any" src="ognl:nextIcon" /> </a> <a jwcid="@DirectLink" listener="listener:doLast"> <img jwcid="@Any" src="ognl:endIcon" /> </a> </span> <span jwcid="@Else"> 下一页 尾页 </span> </td> <td style="width: 200px; height: 20px;"> 共 <span jwcid="@Insert" value="ognl:pageModel.pageCount"></span>页/ <span jwcid="@Insert" value="ognl:pageModel.rowCount"></span> 每页 <span jwcid="@Insert" value="ognl:pageModel.pageSize"></span>条/第 <span jwcid="@Insert" value="ognl:pageModel.currentPage"></span>页 </td> <td> </td> <td style="width: 200px; height: 20px;"> <form jwcid="@Form" listener="listener:doGoto"> <input jwcid="@TextField" value="ognl:gotoNum" size="4" id="jumpNum" /> <input type="submit" value="转到" onclick="return check();"> </form> </td> </tr> </table> |
|
tapestry
2008-02-28
Often, a component must be packaged up with images, stylesheets or other resources (collectively termed "assets") that are needed at runtime. A reference to such an asset can be created using the <asset> element of the page or component specification. For example:
<asset name="logo" path="images/logo_200.png"/> <component id="image" type="Image"> <binding name="image" value="asset:logo"/> </component> In this case, if the component is packaged as /com/example/mylibrary/MyComponent.jwc, then the asset will be /com/examples/mylibrary/images/logo_200.png. Further, the asset path will be localized. |
|
superaxis
2008-02-29
Java组件类中
@Asset("classpath:/corner/orm/tapestry/component/prototype/autocompleter/indicator.gif") public abstract IAsset getIndicatorAsset(); 然后通过 getIndicatorAsset().buildURL(); 就能得到这个图片的URL. Jun Tsai |
|
eric2002cn
2008-02-29
问题解决了
谢谢,tapestry,superaxis两位大哥的热心帮助,再次感谢你们!!! |
|
SilverRing
2008-03-19
你好eric2002cn,能不能把你的解决方案分享一下。我照着superaxis的方法用了,但是还是拿不到
@Asset("classpath:/component/1.gif") public abstract IAsset getTestImage(); public String getTestUrl() { return getTestImage().buildURL(); } <img jwcid="@Any" src="ognl:testUrl" /> |
|
tapestry
2008-03-19
/component/1.gif
在classes文件或者在jar文件里 我记得有个context参数可以取得网站路径下的图片 @Asset("context:/images/1.gif") |
|
eric2002cn
2008-03-25
@Asset("classpath:/com/modules/components/images/pre.gif")
public abstract IAsset getDefaultPreIcon(); public IAsset getPreImageAsset() { String url = getDefaultPreIcon().buildURL(); return new ExternalAsset(url, null); } 这样就可以了 |
|
liziwen2008
2008-03-28
哇,真是高手如云啊。我是刚刚接触,以后还得多向各位大哥请教啊
|