简体   繁体   English

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

[英]How do I parse through a URL path, get the filename, then replace the file extension using JSTL and Java scriptlet

I need to get "filename" from a URL我需要从 URL 获取“文件名”

Here I am declaring我在这里声明

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

this returns "dir1/dir2/dir3/filename.xml" on the webpage这将在网页上返回“dir1/dir2/dir3/filename.xml”

What I need is a Java Scriptlet that takes the URL being produced (dir1/.../filename.xml) and gets the 'filename' with no directories in front and no.xml at the end.我需要的是一个 Java Scriptlet,它采用正在生成的 URL (dir1/.../filename.xml) 并获取前面没有目录的“文件名”,并且在结尾处没有目录。Z0F635D0E10F3874FFFA7B7

Don't use Scriptlets .不要使用Scriptlets Use JSTL functions in EL .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" -->

If you really need to write Java code for this, consider an EL function.如果您确实需要为此编写 Java 代码,请考虑使用 EL function。 Eg例如

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

with

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

How to register an EL function, look at the example somewhere near bottom of Hidden features of JSP/Servlet .如何注册 EL function,请查看JSP/Servlet 隐藏功能底部附近的示例。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM