我看过包含这样的事情的例子:
mountSharedResource("/images/logo.gif", new ResourceReference(ImageScope.class,
"logo.gif").getSharedResourceKey());
mountSharedResource("/resource",
Application.class.getName() + "/" + resourceKey);
Run Code Online (Sandbox Code Playgroud)
但是Javadoc为构造函数说了这个:
ResourceReference(java.lang.Class<?> scope, java.lang.String name);
Run Code Online (Sandbox Code Playgroud)
因此,当您创建一个时ResourceReference,就会给它一个类.为什么?通常你会想要全局范围或ResourceReference刚刚创建的对象的范围,不是吗?
还有,是什么name?是sharedResourceKey吗?如果没有,它resourceKey来自哪里?它是如何产生的,为什么不是它的名字?或者name在类路径上查找并神奇地加载(假设在类路径中只有一个具有该名称的文件;如果有多个会发生什么?)?如果它确实加载了具有该名称的文件,为什么不在Javadoc中这样说呢?
你如何实际为此分配一个物理资源ResourceReference?有一个getResource(),但他们似乎错过了setResource().如果你的目录中有一个图像文件,你webapp如何"附加"对文件的引用,它的路径,甚至是文件内容的字节流?如果有一种方法可以在webapp中读取资源,这可能很有用,但你不能; 它只在类路径中.
我希望能够"挂载"内容,比如说,webapp/games/someGame.swf以便Wicket页面可以访问webapp中的SWF,或者只是对它们进行某种处理.
我对Wicket很新,我在使用资源引用方面遇到了一些困难.我正在使用wicket 1.5.4并有以下问题:我将图像存储在文件系统上.我有类ImageElement,它保存相对于配置的rootFilePath的文件路径的一部分(即dir1/dir2/img1.png).在页面上我添加Image如下:
new Image("id",ImagesResourceReference.get(), pageParameters)
Run Code Online (Sandbox Code Playgroud)
其中页面参数包括图像路径参数(path ="/ dir1/dir2/img1.png").我的问题是:
我在"/ images"路径下安装在Application中的ResourceReference的实现如下:
public class ImagesResourceReference extends ResourceReference {
private static String rootFileDirectory;
private static ImagesResourceReference instance;
private ImagesResourceReference() {
super(ImagesResourceReference.class, "imagesResourcesReference");
}
public static ImagesResourceReference get() {
if(instance == null) {
if(StringUtils.isNotBlank(rootFileDirectory)) {
instance = new ImagesResourceReference();
} else {
throw new IllegalStateException("Parameter configuring root directory " +
"where images are saved is not set");
}
}
return instance;
}
public static void setRootFileDirectory(String rootFileDirectory) { …Run Code Online (Sandbox Code Playgroud) 我正在迁移一个wicket 1.4应用程序,它在webapp上下文目录下有很多js,css en images:
src/main/webapp
+js
++plugin1.js
++plugin2.js
+app
+css
Run Code Online (Sandbox Code Playgroud)
等等
在我们的应用程序中,我们使用了JavaScript.getHeaderContribution("js/plugin1.js");
新的wicket 6实现没有这个头文件贡献方法.相反,你应该使用:
JavaHeaderItem.forReference(new JavaScriptResourceReference(Application.class,"js/plugin1.js");
但我不想使用范围!它现在将在与Application类相同的包中搜索文件.ContextRelativeReference在此位置无效,因为它不扩展ResourceReference.
关于我应该如何访问我的webapp文件而不必将每个文件作为共享资源添加并在我的头文件贡献者中引用它的任何想法?
我正在开发一个Web应用程序,我们将代码和Web资源(如css,图像文件等)分开.
我这里有一个文件:
项目root/src/main/webapp/images/icons/16/add.png
在这个位置:
项目root/src/main/java/se/su/dsv/scipro/icons
我有一个这样的课:
package se.su.dsv.scipro.icons;
import org.apache.wicket.ResourceReference;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.html.image.Image;
import org.apache.wicket.model.Model;
public class ImageIcon extends Image {
private static final long serialVersionUID = 1L;
public static final String ICON_NEW_ADD = "../../../../../../webapp/images/icons/16/add.png";
public ImageIcon(String id, String name, String size, String alt){
super(id, new ResourceReference(ImageIcon.class, name));
if(alt != null){
add(new AttributeAppender("alt", true, new Model<String>(alt), " "));
}
else {
add(new AttributeAppender("alt", true, new Model<String>(name), " "));
}
}
public ImageIcon(String id, String name){
this(id, name, "", null); …Run Code Online (Sandbox Code Playgroud)