2013-09-07 5 views
3

Недавно я включил в мою страницу JSF <p:galleria>, как показано на витрине PrimeFaces. Код выполняется без каких-либо ошибок, но он не отображает изображения. Я думаю, что это связано с неправильным форматом пути для изображений. Как это вызвано и как я могу его решить?<p: graphicImage> не работает в jsf

index.xhtml

<p:galleria value="#{compa.images}" var="image" panelWidth="1570" panelHeight="250" showCaption="true"> 
    <p:graphicImage value="resource/images/#{image}" name="COMPANY CREATION"/> 
</p:galleria> 

compa.java

public void init() { 
    images = new ArrayList<String>(); 

    for(int i=1;i<=10;i++) { 
     images.add("resource/images" + i + ".jpg"); 
    } 
} 

Путь изображения в IDE является ps\build\web\resource\images.

ответ

6

Прежде всего, JSF в контексте этого вопроса просто генератор кода HTML. В HTML изображения представлены элементом <img>, атрибут src должен указывать на (относительный) URL-адрес, с которого веб-браузер может загружать изображение отдельно. Вы проверили сгенерированный вывод HTML, открыв страницу JSF в webbrowser и выполнив правую кнопку и Просмотреть исходный код? У сгенерированных <img> элементов все в порядке? Наверное, нет.

Неправильный способ использования атрибута name.

<p:graphicImage value="resource/images/#{image}" name="COMPANY CREATION"/> 

Атрибут name представляет собой «имя ресурса». Это в основном путь к ресурсу, относящийся к папке /resources. Этот атрибут имеет приоритет над атрибутом value. Итак, в основном вы пытаетесь создать

<img src="COMPANY CREATION" /> 

Это неправильное. JSF вместо этого автоматически генерирует URL-адрес RES_NOT_FOUND. Вы должны были видеть это в сгенерированном HTML-выходе.

При условии, что ваше намерение состоит в том, чтобы показать «COMPANY СОЗДАНИЕ» в подсказке, то правильный путь

<p:graphicImage name="images/#{image}" title="COMPANY CREATION" /> 

Или, если вы настаиваете на использование value атрибута, который принимает контекстный относительный URL вместо название ресурса:

<p:graphicImage value="/resources/images/#{image}" title="COMPANY CREATION" />