函数类型中的方法replace(String,String,String)不适用于参数(StringBuffer,String,String)

P H*_*ans 5 java jstl

这是我的jsp文件:

<%@ page contentType="text/plain" %>
<%@ page pageEncoding="UTF-8"%><%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c'%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<c:out value="${fn:replace(pageContext.request.requestURL, pageContext.request.requestURI, '')}" /><c:out value="${model.uri}" />
Run Code Online (Sandbox Code Playgroud)

我收到了错误

The method replace(String, String, String) in the type Functions is not applicable for the arguments (StringBuffer, String, String)
Run Code Online (Sandbox Code Playgroud)

我试过了pageContext.request.requestURL.toString()但是toString()显然不是一个方法.有什么建议?

Mat*_*all 8

StringBuffer#toString()绝对是正确的打电话方式.问题是使用EL调用它.您可以使用此答案中<c:set>所述将其转换为字符串.

<c:set var="url">${pageContext.request.requestURL}</c:set>
<c:out value="${fn:replace(url, pageContext.request.requestURI, '')}" />
Run Code Online (Sandbox Code Playgroud)

也就是说,我认为有一种更好的方法来获得你想要的不使用的输出字符串fn:replace.