2016-04-30 115 views
0

我正在開發JSP/Servlet網站。我在JSP頁面中有一個表單,它調用Servlet進行一些處理,然後將結果返回到相同的JSP頁面。 表單有從用戶獲取HTML代碼的textarea,我使用textarea的語法高亮工具來格式化textarea內的代碼。如何在另一個textarea中將textarea顯示爲HTML代碼?

問題是當我在更新頁面後保留textarea的值時,如果它輸入的代碼包含一個textarea元素,它將嵌套的textarea的結束標記顯示爲父文本區的結束標記。我保持這樣的價值:

<textarea rows="30" cols="80" id="txtArea" name="txtArea" 
placeholder="Enter your code" >${param.txtArea}</textarea> 

這裏的例子,什麼是事情發生了:

如果用戶在textarea的一切進入,這是正確的保留:

<form > 
     <label for="name">Your name:</label><br /> 
     <input id="name" type="text" /> 
     <input id="submit_button" type="submit" value="Send email" /> 
</form> 

但是,如果用戶輸入:

<form > 
      <label for="name">Your name:</label><br /> 
      <input id="name" type="text" /> 
      <textarea id="message" class="input" name="message" rows="7" cols="30"></textarea> 
      <input id="submit_button" type="submit" value="Send email" /> 
    </form> 

它會保留這些行:

<label for="name">Your name:</label><br /> 
      <input id="name" type="text" /> 
      <textarea id="message" class="input" name="message" rows="7" cols="30"> 

關閉textarea標記以及之後的所有內容都不會保留在textarea中。並呈現爲HTML代碼。任何人都可以幫助我找到一種方法來保留用戶輸入的所有內容嗎?或如何逃避textarea的第一個結束標記?

回答

0

我建議您使用javascript將所需的值分配給您的文本區域元素。見下面的例子。

請記住,您可能需要避開引號。你可以用java或javascript處理它。儘管如此,JavaScript將更容易處理你想要的與使用java/jsp佔位符相媲美的東西。

這是一個在javascript中處理它的例子。

<!DOCTYPE html> 
<html><body> 

<textarea id="outerArea" cols=50 rows=10></textarea> 

<script type="text/javascript"> 
    var textAreaValue = '<form>' 
     +' <input type="text"><br>' 
     +' <textarea>Inner Text Area</textarea>' 
     +'</form>'; 
    document.getElementById("outerArea").value = textAreaValue; 
</script> 

</body> 
</html> 

編輯 回答OP的評論:Javscript仍然要走的路。使用JSP和Javascript變量。

<!DOCTYPE html> 
<html> 
<header> 
<script type="text/javascript"> 
    function copyContent() { 
     document.getElementById("area1").value = ${param.txtArea}; 
    } 
</script> 
</header> 
<body> 
<textarea id="area1" cols=50 rows=10></textarea> 
</body> 
</html> 
+0

我不能使用此。我在JSP頁面的代碼中只有1個textarea。用戶將在該textarea中輸入他的html代碼。如果用戶代碼不包含textarea,那就沒問題,並且沒有任何問題。但是,如果用戶代碼中有textarea,我們將遇到問題。所以,我不知道textarea是否會包含另一個。 –

+0

我想爲用戶顯示他/她輸入的內容。 –

+0

不過,如果您使用JSP Place Holders,則會遇到許多其他問題。將佔位符的內容添加到JavaScript變量並將其分配到文本區域。 – Rafa

0

如果將HTML放入textarea標記的value屬性,它將正常工作。

就像是:

<textarea value="<!DOCTYPE html> 
<html> 
    <head> 
     <title> 
      Example page 
     </title> 
    </head> 
    <body> 
     <textarea></textarea> 
    </body> 
</html>"></textarea>