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

时间:2011-06-16 04:23:15

标签: 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}" />

我收到错误

The method replace(String, String, String) in the type Functions is not applicable for the arguments (StringBuffer, String, String)

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

3 个答案:

答案 0 :(得分:7)

StringBuffer#toString()绝对是正确的调用方法。问题是使用EL调用它。您可以使用<c:set>将其转换为字符串,如this answer中所述。

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

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

答案 1 :(得分:0)

pageContext.request.requestURL.toString() 

应该工作。

答案 2 :(得分:-1)

尝试"" + pageContext.request.requestURL而不是pageContext.request.requestURL.toString()