【问题标题】:wicket image path without rewrite检票口图像路径无需重写
【发布时间】:2011-09-21 22:11:54
【问题描述】:

我正在尝试上传和显示图片。 我得到文件,将其写入 glassfish 应用服务器的 docroot,然后

    Image image = new Image("myimage","images/task.gif");

但我得到<img wicket:id="myimage" src="resources/wickcat.MyPage/images/task.gif" />

有什么方法可以让 wicket 不会重写我的 src 路径?即使当我使用 http://.... 启动 src 时,它也会写入 resources/wickcat.MyPage/http://... 这完全没有意义。 我只需要它来写“images/task.gif”。 有什么想法吗?

【问题讨论】:

    标签: image url path rewrite wicket


    【解决方案1】:

    有两种方法可以做到这一点。

    1. 使用<img src="images/task.gif" />。这是如果您不需要引用类中的组件。

    2. 使用ContextImage image = new ContextImage("myimage", "images/task.gif");。如果你使用ContextImage 组件,源将是相对于上下文根的,你甚至可以输入一个模型作为图像的相对路径。

    【讨论】:

    • 不错的提示,值得投票,感谢分享,但我的目的是防止 wicket 重写我的 src 路径
    【解决方案2】:

    Image 类假定图像是位于类路径中的资源。

    您可以将WebMarkupContainerSimpleAttributeModifier 一起使用:

    WebMarkupContainer img = new WebMarkupContainer("myimage")
        .add(new SimpleAttributeModifier("src", "/images/task.gif"));
    

    它将按原样输出字符串,因此您可以完全控制。

    如果它在整个应用程序中多次使用,我建议您创建一个封装此行为的组件。类似的东西

    public class MyImage extends WebMarkupContainer {
        public MyImage(String id, String path) {
            add(new SimpleAttributeModifier("src", path));
        }
    }
    

    【讨论】:

    • 不应该是 new SimpleAttributeModifier("src","/images/task.gif"); ?我忘了添加 gif 的根斜线,但你猜对了 :=)
    • 在 SimpleAttributeModifier 的构造函数的参数以正确的方式给出后,我会接受这个作为答案,我不希望连环杀手编码器阅读这个错误版本,浪费时间然后来找我 :)
    • 意识到这是一种已弃用的方式 :(
    • 已更正。在新版本中,它将是AttributeModifier.replace("src",...)
    猜你喜欢
    • 2011-05-27
    • 2013-01-25
    • 1970-01-01
    • 2018-09-06
    • 2017-09-13
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多