Как мне разобрать путь URL, получить имя файла, а затем заменить расширение файла, используя JSTL и скриптлет Java - PullRequest
1 голос
/ 11 августа 2011

Мне нужно получить «имя файла» из URL

Здесь я заявляю

<p:out var="path" value="${webObject.path}" scope="page"/>
<c:set var="string1" value="${path}" />
<p:out value="${string1}" />

, что возвращает «dir1 / dir2 / dir3 / filename.xml» на веб-странице

Что мне нужно, так это Java Scriptlet, который берет создаваемый URL (dir1 /.../ filename.xml) и получает «имя файла» без каталогов впереди и без XML в конце.

1 Ответ

3 голосов
/ 11 августа 2011

Не используйте Scriptlets . Используйте функции JSTL in EL .

<c:set var="pathparts" value="${fn:split(path, '/')}" />                <!-- String[] with values "dir1", "dir2", "dir3" and "filename.xml" -->
<c:set var="filename" value="${pathparts[fn:length(pathparts) - 1]}" /> <!-- Last item of String[]: "filename.xml" -->
<c:set var="basename" value="${fn:split(filename, '.')[0]}" />          <!-- Result: "filename" -->

Если вам действительно нужно написать Java-код для этого, рассмотрите функцию EL. Э.Г.

<c:set var="basename" value="${util:basename(path)}" />

с

public static String basename(String path) {
    String[] pathparts = path.split("/");
    String filename = pathparts[pathparts.length - 1];
    return filename.split("\\.")[0];
}

Как зарегистрировать функцию EL, посмотрите на пример где-то внизу Скрытые функции JSP / Servlet .

...