2016-04-30 14 views
0

私はJSP/ServletのWebサイトを開発しています。 JSPページにServletを呼び出すフォームがあります。Servletは何らかの処理を行い、その結果を同じJSPページに戻します。 フォームにはユーザーからHTMLコードを取得するためのテキストエリアがあり、テキストエリア内のコードをフォーマットするためにテキストエリア用の構文強調ツールを使用します。別のテキストエリアにHTMLコードとしてテキストエリアを表示するにはどうすればよいですか?

問題は、入力したコードにtextarea要素が含まれている場合、ページを更新した後でtextareaの値を保持するときに、親textareaの終了タグとして入れ子になったtextareaの終了タグを描画します。私はこの方法で値を保持します。ここでは

<textarea rows="30" cols="80" id="txtArea" name="txtArea" 
placeholder="Enter your code" >${param.txtArea}</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"> 

テキストエリアタグとその後のすべてを閉じることは、テキストエリア内に保持されません。 HTMLコードとしてレンダリングします。誰でも、ユーザーが入力したすべてのコンテンツを保持する方法を見つける手助けをすることができますか?またはテキストエリアの最初の終了タグをエスケープする方法は?

答えて

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> 

EDIT 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つのテキストエリアがあります。ユーザーはそのテキストエリアにHTMLコードを入力します。ユーザーコードに、問題なくテクスチャ領域が含まれていない場合。ただし、ユーザーコードにテキストエリアがある場合は、問題が発生します。したがって、テキストエリアに別のテキストエリアが含まれるかどうかはわかりません。 –

+0

私はユーザーが入力したものを正確に表示したいと思います。 –

+0

しかし、JSPプレースホルダを使用すると、他の多くの問題が発生します。プレースホルダーの内容をjavascript変数に追加し、それをテキスト領域に割り当てます。 – Rafa

0

HTMLをtextareaタグのvalue属性に入れると正しく動作します。そのような

は:

<textarea value="<!DOCTYPE html> 
<html> 
    <head> 
     <title> 
      Example page 
     </title> 
    </head> 
    <body> 
     <textarea></textarea> 
    </body> 
</html>"></textarea> 
関連する問題