在我的应用程序中,我安装了以下URL:
this.mountPage("/details/${site}", MerchantDetailPage.class);
因此,例如../details/anything的请求将使用pageparameter创建MerchantDetailPage的实例:site = anything。
MerchantDetailPage的构造函数:
public MerchantDetail(final PageParameters parameters) {
super();
org.apache.wicket.util.string.StringValue storeParameter = parameters.get("site");
if (!storeParameter.isEmpty()) {
this.store = this.service.getStoreByQBonSiteWithCategoriesDescriptionsRegionAndAddress(storeParameter.toString());
}
if (store == null) {
throw new RestartResponseAtInterceptPageException(Application.get().getHomePage());
}
// Build the page
this.createPage(this.store, null);
}
这似乎工作正常,直到我注意到构造函数被调用了4次。 经过一些挖掘后,我发现构造函数被调用一次,参数为site = anything,然后是另外3次,对于页面上的3个图像; e.g:
<img wicket:id="store_no_image" src="./images/shop_no_logo_big.png" alt="logo" />
因此,对于此资源,Wicket也调用此页面,但使用参数:site = images。
因此,商店为null
,因此对图片的请求会重定向到主页=&gt;找不到图像。
为什么会这样?为什么wicket试图通过页面挂载处理资源请求?
一些评论意见:
答案 0 :(得分:2)
嗯......你的页面位于
/detail/anything
已正确映射到您的商家详细信息页面...
您的图片位于
/detail/images/shop_no_logo_big.png
和类似,已正确映射到您的商家详细信息页面... 挂载路径不知道也不关心它是页面请求还是资源请求。总而言之,您可能需要使用挂载路径动态创建资源...
因此解决方案是将图像移动到与您的装载路径不匹配的位置。