在做Jsp页面开发时,我们经常使用JSTL表达式来进行页面的输出,但是突然遇到如下一个问题
问题描述:当数据库中某个字段带双引号时,input文本框使用Jstl表达式直接设置value值时,会出现显示为空的不正常现象。
<input type="text" class="form-control" id="place" name="place" value="${place}">
上面这种情况看起来是正确的,但是没有遇到特殊情况,如果数据库中place字段的值是 "北京 大学" 或者北京"大学"
这种情况下该input输入框的值会显示什么呢?
答案是:
第一种情况显示 空白;
第二种情况显示 北京
当然上面两种情况都不能显示出正确的输出,原因是input的value接收数据时会原样输出,
导致输出英文的双引号同html元素的双引号进行了组合,产生了冲突,故不能产生正确的输出。
若是想解决该问题,有很多实现方式,我提供如下两种参考实现方法
1).使用jstl的另外一个表达式<c:out>实现,将value的值使用<c:out>表达式输出
<input type="text" class="form-control" id="place" name="place" value="<c:out value="${place}"></c:out>">
2).在服务端对双引号进行转义,即将双引号替换成html的转义字符"
place.replaceAll("\"",""");
以上只是其中2种实现方法,还有其他的实现,比如使用Js去改变value的值也可以实现