如何解析URL路径,获取文件名,然后使用JSTL和Java scriptlet替换文件扩展名

时间:2011-08-10 20:27:31

标签: java string parsing jstl scriptlet

我需要从网址

获取“filename”

我在这里宣布

<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的'filename'。

1 个答案:

答案 0 :(得分:3)

不要使用 Scriptlets 。在JSTL functions中使用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函数。 E.g。

<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函数,请查看Hidden features of JSP/Servlet底部附近的示例。