Метод replace (String, String, String) в типе Functions не применим для аргументов (StringBuffer, String, String) - PullRequest
4 голосов
/ 16 июня 2011

Вот мой файл 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 ]

7 голосов
/ 16 июня 2011

StringBuffer#toString() - определенно правильный метод для вызова. Проблема в том, чтобы вызвать его с помощью EL. Вы можете преобразовать его в строку, используя <c:set>, как описано в этот ответ .

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

Тем не менее, я думаю, что есть лучший способ получить желаемую выходную строку, в которой не используется fn:replace.

0 голосов
/ 16 июня 2011
pageContext.request.requestURL.toString() 

Должно работать.

0 голосов
/ 16 июня 2011

попробуйте "" + pageContext.request.requestURL вместо pageContext.request.requestURL.toString()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...