在做Jsp頁(yè)面開(kāi)發(fā)時(shí)那伐,我們經(jīng)常使用JSTL表達(dá)式來(lái)進(jìn)行頁(yè)面的輸出,但是突然遇到如下一個(gè)問(wèn)題
問(wèn)題描述:當(dāng)數(shù)據(jù)庫(kù)中某個(gè)字段帶雙引號(hào)時(shí),input文本框使用Jstl表達(dá)式直接設(shè)置value值時(shí),會(huì)出現(xiàn)顯示為空的不正秤匙現(xiàn)象。
<input type="text" class="form-control" id="place" name="place" value="${place}">
上面這種情況看起來(lái)是正確的灾挨,但是沒(méi)有遇到特殊情況邑退,如果數(shù)據(jù)庫(kù)中place字段的值是 "北京 大學(xué)" 或者北京"大學(xué)"
這種情況下該input輸入框的值會(huì)顯示什么呢竹宋?
答案是:
第一種情況顯示 空白;
"北京 大學(xué)"
第二種情況顯示 北京
北京"大學(xué)"
當(dāng)然上面兩種情況都不能顯示出正確的輸出地技,原因是input的value接收數(shù)據(jù)時(shí)會(huì)原樣輸出逝撬,
導(dǎo)致輸出英文的雙引號(hào)同html元素的雙引號(hào)進(jìn)行了組合,產(chǎn)生了沖突乓土,故不能產(chǎn)生正確的輸出。
若是想解決該問(wèn)題溯警,有很多實(shí)現(xiàn)方式趣苏,我提供如下兩種參考實(shí)現(xiàn)方法
1).使用jstl的另外一個(gè)表達(dá)式<c:out>實(shí)現(xiàn),將value的值使用<c:out>表達(dá)式輸出
<input type="text" class="form-control" id="place" name="place" value="<c:out value="${place}"></c:out>">
2).在服務(wù)端對(duì)雙引號(hào)進(jìn)行轉(zhuǎn)義梯轻,即將雙引號(hào)替換成html的轉(zhuǎn)義字符"
place.replaceAll("\"",""");
以上只是其中2種實(shí)現(xiàn)方法食磕,還有其他的實(shí)現(xiàn),比如使用Js去改變value的值也可以實(shí)現(xiàn)