我做了一个自定义JSF组件(它看起来像一个组合框(icefaces selectonemenu)),但它使用了一对图片(png)和一点javascript。我把所有的东西都放到jar中,这样开发人员就可以把它作为一个jar拷贝到web-inf/lib文件夹中。图像和js只是为这个自定义组件,所以我不能让他们把这个图像和js在他的项目,它必须在我的jar。
我把所有的东西都放在一起,它的工作几乎很棒,只是图像和JS,我没有让它们工作。我不知道怎么把它们放在罐子里。我可以让它们工作,只要它们是应用程序的一部分,但不是jar的一部分。例如,我应该如何在我的encodebegin代码中获得它们?
我正在使用JSF与icefaces 1.8
提前感谢!!
如果您已经使用JSF 2.0,那么当您使用@ResourceDependency
或@ResourceDependencies
注释时,它应该可以很好地工作,它可以根据JAR的/META-INF/resources
文件夹解析资源。
在JSF 1。x,你最好的选择是创建一个自定义的"资源servlet",它映射在一个特定的URL模式上,例如/com.nahiko.resources/*
,并且只是将资源从类路径流到HTTP响应。基本启动示例:
String path = "/META-INF/resources" + request.getPathInfo();
InputStream input = getClass().getResourceAsStream(path);
OutputStream output = response.getOutputStream();
// ...
文档沿着您的JAR,这个servlet必须被映射。或者,如果您的目标是Servlet 3.0容器,只需添加@WebServlet
注释以使其自动注册。