【问题标题】:Wicket ImageResourceReference ist mounted multiple times everytime the page is reloaded每次重新加载页面时都会多次安装 Wicket Image Resource Reference
【发布时间】:2014-02-20 11:41:10
【问题描述】:

我正在尝试在我的页面上安装 ImageResourceReference,但 ExternalLink 安装了多次(每次我重新加载页面时,我都会获得一个新的附加链接(同一个)。 比如我第一次启动服务器并加载页面时,只有一个ExternalLink,第二次,两个链接,第三次三个,等等……

这可能是什么原因?

这是我的代码: WebApp.java:

void init() {
.....
mountResource("/book/number/${number}/images/ray/${name}", new ImageResourceReference());
....
}

图像资源面板:

public class ImageResourcesPanel extends Panel {

    private static final long serialVersionUID = -8723530004274531683L;
    private static Logger logger = LoggerFactory.getLogger(ImageResourcesPanel.class
            .getName());

    /**
     * The image names for which dynamic images will be generated
     */
    private static List<String> IMAGE_NAMES = new ArrayList<String>(); 


    public ImageResourcesPanel(final String wicketId, final IModel<Device> model) {
        super(wicketId, model);

        String pathToImage = "images";
        IMAGE_NAMES.add(pathToImage);

        ListView<String> listView = new ListView<String>("list", IMAGE_NAMES) {

            private static final long serialVersionUID = 1L;

            @Override
            protected void populateItem(ListItem<String> item) {

                logger.debug("Executed!");

                ResourceReference imagesResourceReference = new ImageResourceReference();
                PageParameters imageParameters = new PageParameters();


                int number = model.getObject().getNumber();
                String imageName = item.getModelObject();
                String folder = model.getObject().getLinkToFolder();
                imageParameters.set("name", imageName);
                imageParameters.set("number", number);
                imageParameters.set("folder", folder);

                // 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);
    }
}

【问题讨论】:

  • 我不明白这个问题。请提供:面板标记、生成的错误 html、所需的 html。
  • 嗨,我正在使用类似的代码,当页面加载时,我收到以下异常。 WicketObjects:无法解析类 [undefined] java.lang.ClassNotFoundException:在 org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader. java:1359) 在 java.lang.Class.forName0(Native Method) 在 java.lang.Class.forName(Class.java:247)

标签: java web-applications wicket


【解决方案1】:

知道了!

在页面上安装图像后,我只需要使 ListView 为空。我只是在添加ListView-Item的链接后添加了一行代码:

`IMAGE_NAMES.remove(pathToImage);`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    • 2012-03-09
    • 2018-01-23
    • 2018-07-04
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    相关资源
    最近更新 更多