2014-02-08 86 views
-1

在我的Java Web應用程序中,我從數據庫中提取一個屬性並通過控制器將其發送到視圖/瀏覽器層。我有數據問題或字符串轉義問題,我該如何解決?

在HTML,我期待字符串看起來像這樣:

9" nails 

相反,它看起來是這樣的:

"9\" nails" 

所以我插入的Apache StringEscapeUtils到我的業務層和跑unescapeJava()在財產上。結果變成這樣:

"9" nails" 

略有改善,但仍然不正確。

所以我的問題是這不僅僅是一個字符串轉義問題,而是一個更基礎的數據問題。換句話說,如果我爲了達到所需的輸出所做的就是從這個屬性的開始和結尾剝去雙引號,那麼就有可能以意想不到的方式影響其他數據行 - 在這種情況下,我必須直觀地檢查整個數據庫,以確保不會根據其他字符串中的雙引號字符的含義錯誤地顯示其他某些行。

任何方向在這裏將不勝感激。謝謝。

+0

你可以發佈你的代碼來獲取你的數據庫中的數據併發送給服務器嗎? –

+0

我只是通過一些中間件使用getString實際上有很多內部連接的J2EE API參與,但我試圖儘可能簡化問題,並將其限制在我認爲在我訪問屬性值的Java服務層中最可能糾正的問題的位置。 –

回答

0

看起來有些層增加了引號前和每一個字符串後面的服務器之前, 。不知道更多,我建議你做一個簡單的str = str.substring(1, str.length() - 1)刪除已添加的兩個引號。我們不能告訴你它是否涉及到一些「基礎數據問題」,因爲我們沒有看到其他任何東西。

如果你想得到真正的安全,你可以使用indexOf("\"");lastIndexOf("\"");,看它們是否分別是索引0和str.length() - 1,如果它們是:去掉它們

+0

聲音感傷d。謝謝! –

0

您只需更換串您從API調用接收到數據後,您將其發送到使用Java

String foo = "9\\\" nails"; 
foo = foo.replace("\\\"", "\""); 
相關問題