java - JSTL函数: ${fn:replace()} Not only replaces with new pattern also adds the original value

标签 java jsp jstl

例如,我想替换值 A,B 中的 ,。 .C 带有空白

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix = "fn" uri = "http://java.sun.com/jsp/jstl/functions" %>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <c:set var="pat" value="A,B.  .C" /> 
        <c:out value="${pat}"/></br >
            ${fn:replace(pat, ",", " ")}
        <c:out value="${pat}"/></br >
    </body>
</html>

预期输出:

A,B. .C
A B. .C

实际输出:

A,B. .C
A B. .C A,B. .C

浏览器图片

enter image description here

替换后的值包含变量${pat}也是原始值。

我做错了什么?以前从未见过这个。
从这些结果来看,该函数毫无用处。

(使用 jdk1.6.0_45 和 jdk1.7.0_51 Java EE 版本进行测试:Java EE 6 Web)

编辑

来自@rickz的回答

我测试过

<c:set var="pat" value="A,B.  .C" /> 
   <c:out value="${pat}" /></br >
   ------------------------------</br >
   ${fn:replace(pat, ",", " ")}</br >
   ------------------------------</br >    
   <c:out value="${pat}" /></br >
   ------------------------------</br >

输出:

A,B. .C
------------------------------
A B. .C
------------------------------
A,B. .C
------------------------------

我们可以看到${pat}的值没有改变
网络上的大多数手册都没有考虑这一点(或者没有解释)。

example 1
What is the simplest way to replace quote characters with \" sequence inside string values?

以及许多其他

最佳答案

请尝试一下这个方法。

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix = "fn" uri = "http://java.sun.com/jsp/jstl/functions" %>

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <c:set var="pat" value="A,B.  .C" /> 
    ${pat}</br >
    ${fn:replace(pat, ",", " ")}
</body>
</html>

关于java - JSTL函数: ${fn:replace()} Not only replaces with new pattern also adds the original value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28653887/

相关文章:

java - 使用 servlet 上传文件 GWT

jsp - 三层架构问题

dictionary - 使用 JSTL 循环遍历 Map

javascript - SWT 浏览器小部件 : How to listen to JavaScript events?

Java - 从csv文件读取获取空值

java - 无法使用 Chrome Web 驱动程序访问 servlet

java - 为什么 PetClinic 示例中 Vets 类的 VetList 方法使用 XMLElement?

java - java中基于 token 的登录和身份验证

java - 如何使用for循环从jsp获取jquery中的值?

jsp - 从 JSTL 中的 session 中删除列表