我自己才刚刚开始使用Wicket,但是我只是将资源安装为具有自己URL的共享资源。您只需覆盖
init()自己
Application的资源并使用
getSharedResources().add(resourceKey, dynamicImageResource);
然后,将其挂载为共享资源
mountSharedResource(path, resourceKey);
出于某种原因,我仍然不完全了解,您必须将应用程序的类名放在传递给的资源键之前
mountSharedResource()。
让我们为一些额外的投票添加一个完整的示例!首先使用以下命令创建一个空的Wicket模板
mvn archetype:create -DarchetypeGroupId=org.apache.wicket -DarchetypeArtifactId=wicket-archetype-quickstart -DarchetypeVersion=1.4.0 -DgroupId=com.mycompany -DartifactId=myproject
然后,通过添加以下
init()方法来覆盖方法
WicketApplication:
@Overrideprotected void init() { final String resourceKey = "DYN_IMG_KEY"; final String queryParm = "id"; getSharedResources().add(resourceKey, new Resource() { @Override public IResourceStream getResourceStream() { final String query = getParameters().getString(queryParm); // generate an image containing the query argument final BufferedImage img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB); final Graphics2D g2 = img.createGraphics(); g2.setColor(Color.WHITE); g2.drawString(query, img.getWidth() / 2, img.getHeight() / 2); // return the image as a PNG stream return new AbstractResourceStreamWriter() { public String getContentType() { return "image/png"; } public void write(OutputStream output) { try { ImageIO.write(img, "png", output); } catch (IOException ex) { } } }; } }); mountSharedResource("/resource", Application.class.getName() + "/" + resourceKey);}动态的小PNG资源只是将查询参数写在黑色背景上。当然,您可以访问数据库或执行任何您想生成图像数据的操作。
最后,执行
mvnjetty:run,您将可以通过此URL访问资源。



