我想要完成的是将css文件中的某些图像引用放在与实际应用程序分开的文件夹中。
是否可以将外部文件夹作为资源安装在Wicket中?
在伪代码中,这就是我想要做的事情:
public class Application extends WicketApplication
{
init()
{
mountResource(new FolderResource("Path/to/some/folder", "someid"));
}
}
这样.css类就会像这样引用资源:
.someclass
{
url("resources/someid/images/image.png")
}
我确定我已经在某个地方看到了这个,但我似乎无法再找到它......
修改 还应该注意我目前在Wicket 1.4上运行
答案 0 :(得分:3)
简单如下。
<强> MyApplication.java:强>
public class MyApplication extends WebApplication {
...
public void init() {
...
final String resourceId = "images";
getSharedResources().add(resourceId, new FolderResource(new File(getServletContext().getRealPath("img"))));
mountSharedResource("/image", Application.class.getName() + "/" + resourceId);
}
...
}
<强> FolderResource.java:强>
public class FolderResource extends WebResource {
private File folder;
public FolderResource(File folder) {
this.folder = folder;
}
@Override
public IResourceStream getResourceStream() {
String fileName = getParameters().getString("file");
File file = new File(folder, fileName);
return new FileResourceStream(file);
}
}
然后,您可以通过简单的URL从应用程序中的“img”文件夹中获取任何图像:
/your-application/app/image?file=any-image.png
这里“/ your-application”是应用程序上下文路径,“/ app”是web.xml中的Wicket servlet映射,“any-image.png”是图像文件的名称。