在JSF中的h:graphicImage中没有获取图像

时间:2010-03-31 09:44:31

标签: jsf facelets

我对h:graphicImage

有一个非常奇怪的错误

此代码可以正常工作: -

<h:graphicImage value="/Common/Images/#{item.templatePicName}"/>

这个不是: -

<h:graphicImage alt="${app:getCommonImagePath(item.templatePicName)}"  value="${app:getCommonImagePath(item.templatePicName)}" />

它只显示alt值/Common/Images/Sunset.jpg,它非常精细,适用于第一种情况。那么为什么它在第二种情况下不起作用?我的图片没有问题。它们出现在正确的目录中。

这里getCommonImagePath是我的自定义EL函数,其定义是:

package Common;


public final class AppDeployment {

    private AppDeployment(){ //hide constructor

    }

    private static String commonImageFolderPath = "/Common/Images/";
    public static String getCommonImagePath(String picName){
        return commonImageFolderPath + picName;
    }
}

2 个答案:

答案 0 :(得分:2)

使用JSF,您应该使用#{..}而不是${..}

然后检查生成的HTML以查看生成的图像的src指向的内容。

然后检查您的自定义标记是否已正确映射。

答案 1 :(得分:1)

如果你的app类中有一个连接你想要的属性,它就更容易解决。

即:

class App {
    private String commonImagePath="/Common/Images/";

    //getters and setters
} 

然后你会写:

<h:graphicImage alt="#{app.commonImagePath}#{item.templatePicName}" value="#{app.commonImagePath}#{item.templatePicName}" />