2010-03-31 11 views
0

J'ai cette erreur très étrange h: graphicImageimage h: graphicImage dans JSF

Ce code fonctionne très bien: -

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

Et celui-ci: - ne

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

Il montre seulement la valeur alt /Common/Images/Sunset.jpg qui est parfaitement bien et fonctionne dans le 1er cas. Alors pourquoi ça ne marche pas dans le 2ème cas? Il n'y a pas de problèmes avec mes images. Ils sont présents dans le bon répertoire.

ici getCommonImagePath est ma fonction EL personnalisée, dont la définition est la suivante:

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

Répondre

2

Avec JSF, vous devez utiliser #{..} plutôt que ${..}.

Ensuite, vérifiez le code HTML généré pour voir à quoi pointe le src de l'image générée.

Ensuite, vérifiez si votre tag personnalisé est mappé correctement.

+0

problème Salut Bozho, n'a pas été fait de # ou $. J'ai trouvé la réponse à mon propre problème. En fait j'avais besoin de mettre double barre oblique et cela a fonctionné :) private static String commonImageFolderPath = "// Common // Images //"; – TCM

+0

c'est vraiment très étrange. – Bozho

1

Il est plus facile à résoudre si vous avez une propriété dans votre classe d'application qui concatène ce que vous voulez.

-à-dire:

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

    //getters and setters 
} 

Ensuite, vous écrivez:

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