1

我需要从 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 的“文件名”。

4

1 回答 1

4

不要使用Scriptlets。在EL中使用JSTL 函数

<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的隐藏特性底部附近的示例。

于 2011-08-10T20:30:23.147 回答