How could I use PageParameters on a Wicketpanel? I'm willing to load images from filesystem on a WicketPanel, and I found a tutorial for that, but they are using a Page, and in my case, I want to mount the images on a Panel. What should I change in this class or do I HAVE to implement a PageClass for this usecase? http://wicketinaction.com/2011/07/wicket-1-5-mounting-resources/ https://github.com/martin-g/blogs/blob/master/request-mappers/src/main/java/com/wicketinaction/requestmappers/resources/images/ImageResourcesPage.java
public class ImageResourcesPage extends WebPage {
/**
* The image names for which dynamic images will be generated
*/
private static final String[] IMAGE_NAMES = new String[] {"one", "two", "three"};
public ImageResourcesPage(final PageParameters parameters) {
super(parameters);
final ResourceReference imagesResourceReference = new ImageResourceReference();
final PageParameters imageParameters = new PageParameters();
ListView<String> listView = new ListView<String>("list", Arrays.asList(IMAGE_NAMES)) {
@Override
protected void populateItem(ListItem<String> item) {
String imageName = item.getModelObject();
imageParameters.set("name", imageName);
// generates nice looking url (the mounted one) to the current image
CharSequence urlForWordAsImage = getRequestCycle().urlFor(imagesResourceReference, imageParameters);
ExternalLink link = new ExternalLink("link", urlForWordAsImage.toString());
link.setBody(Model.of(imageName));
item.add(link);
}
};
add(listView);
}
}
Thanks
Got it! I Had just to add the IModel as argument in the ImageResourcePanel-Constructor.
`public class ImageResourcesPanel extends Panel {
/**
* The image names for which dynamic images will be generated
*/
private static final String[] IMAGE_NAMES = new String[] {"one", "two", "three"};
public ImageResourcesPanel(final String wicketId, IModel<Book> book) {
super(wicketId, book);
int refNumber = book.getModelObject().getRefNumber();
ListView<String> listView = new ListView<String>("list", Arrays.asList(IMAGE_NAMES)) {
@Override
protected void populateItem(ListItem<String> item) {
String imageName = item.getModelObject();
imageParameters.set("name", imageName);
imageParameters.set("ref_number", refNumber);
final ResourceReference imagesResourceReference = new ImageResourceReference();
final PageParameters imageParameters = new PageParameters();
// generates nice looking url (the mounted one) to the current image
CharSequence urlForWordAsImage = getRequestCycle().urlFor(imagesResourceReference, imageParameters);
ExternalLink link = new ExternalLink("link", urlForWordAsImage.toString());
link.setBody(Model.of(imageName));
item.add(link);
}
};
add(listView);
}
}`