Вы можете использовать ExternalContext#getRealPath()
для преобразования заданного относительного веб-пути в абсолютную файловую систему диска.Таким образом, чтобы получить абсолютный путь к файловой системе на диске для папки /images
в общедоступном веб-контенте, выполните следующие действия:
String relativeWebPath = "/images";
String absoluteDiskPath = FacesContext.getCurrentInstance().getExternalContext().getRealPath(relativeWebPath);
File imagesFolder = new File(absoluteDiskPath);
// ...
Следует иметь в виду, что вышеперечисленное не будет работать при настройке сервераразвернуть WAR в память, а не на диск.getRealPath()
вернул бы null
при любых обстоятельствах.Вам нужно искать альтернативный подход, например, хранить его вне WAR по фиксированному пути или, может быть, в базе данных.
Кроме того, все еще в порядкеиспользовать h: datatTable для отображения данных, поскольку я понимаю, что таблицы несколько устарели? Нет?
Таблицы не устарели.Они по-прежнему идеально подходят для представления табличных данных.Только использование таблиц для разметки действительно считается плохой практикой, поскольку это не семантическое и, следовательно, плохое для SEO.В терминах JSF мы говорим об использовании <h:panelGrid>
для определения макета страницы (например, заголовок, тело, нижний колонтитул и т. Д.).Вместо этого вы должны использовать <div>
s, которые могут быть сгенерированы с помощью <h:panelGroup layout="block">
.