2016-01-14 3 views
1

В калиткой добавить новое изображение на странице:Как проверить, существует ли ContextRelativeResource?

String filename = "images/specialLogo.jpg"; 
add(new Image("logoImage", new ContextRelativeResource(filename))); 

Как я могу проверить, существует ли этот файл «specialLogo.jpg», путем добавления перед тем имя файла правильный путь, по которому приложение .war файл (ContextRelative)?
Другими словами: как сделать:

if (exists) { 
    add...(specialLogo) 
} else { 
    add... (normalLogo) 
} 
+0

Вы можете использовать [java.io.File.exist()] (http://docs.oracle.com/javase/7/docs/ апи/Java/IO/file.html # существует% 28% 29). –

+0

Да, но я не знаю полного пути перед именем файла - и об этом и говорит мой вопрос. – Celahirius

ответ

0

Один из способов заключается в использовании https://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html#getResource(java.lang.String) и проверьте, не нулевой результат.

Другой способ https://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html#getRealPath(java.lang.String), а затем с API, File/Path

+0

Да, оба варианта работают очень хорошо! Спасибо! – Celahirius

1

Я попробовал это решение на моей тестовой странице в проекте калиткой.

Мы можем добавить контекст к имени файла, и это будет полный путь к файлу. Так (как вам нужно), если он существует, то мы получим, что в противном случае принять другую картину:

String context = ((WebApplication)Application.get()).getServletContext().getContextPath(); 
String filenameSpecial = "/images/specialLogo.jpg"; 
String filenameNormal = "/images/normalLogo.jpg"; 
File f = new File(context + filenameSpecial); 
add(new Image("logoImage", new ContextRelativeResource(f.exists() ? filenameSpecial : filenameNormal))); 
+0

Зачем нужно задавать этот вопрос постеру? Пожалуйста, объясните свое решение. –

+0

Автор сказал, что он не знает полного пути к файлам, поэтому есть способ сделать это без него. Есть ли что-то неправильное? Я попробовал это на своей тестовой странице. – sanluck

+0

Ваш ответ может быть правильным. Но вы не ** описали, как работает ваше решение. Это было бы полезно для автора вопроса, а также для других читателей. _ Любой ответ, который дает ассеру в правильном направлении, полезен, но попытайтесь упомянуть о любых ограничениях, допущениях или упрощениях в вашем ответе. Краткость приемлема, но более полные объяснения лучше ._ - от [Как написать хороший ответ] (http://stackoverflow.com/help/how-to-answer) –

Смежные вопросы