Учитывая эту структуру папок,
YourProject
|-- src
| `-- com
| `-- example
| `-- BackingBean.java
|-- WebContent
| |-- META-INF
| |-- WEB-INF
| |-- resources
| | `-- icons
| | `-- foo.png
| `-- foo.xhtml
:
Вы можете получить его либо ExternalContext#getResourceAsStream()
, который принимает путь относительно веб-контента:
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
InputStream input = externalContext.getResourceAsStream("/resources/icons/foo.png");
// ...
Или Resource#getInputStream()
, где Resource
получается из ResourceHandler#createResource()
, который принимает /resources
-относительный путь:
ResourceHandler resourceHandler = FacesContext.getCurrentInstance().getApplication().getResourceHandler();
InputStream input = resourceHandler.createResource("icons/foo.png").getInputStream();
// ...
Что касается выбора изображения и его обхода, просто сделайте что-то вроде следующего:
<h:graphicImage name="icons/foo.png">
<f:ajax event="click" listener="#{bean.setImage(component.name)}" />
</h:graphicImage>
<h:graphicImage name="icons/bar.png">
<f:ajax event="click" listener="#{bean.setImage(component.name)}" />
</h:graphicImage>
<h:commandButton value="submit" action="#{bean.saveImage}" />
Смотри также: