- PR -

strutsでユーザが入力した改行コードをJSPで表示するには

1
投稿者投稿内容
こざる
会議室デビュー日: 2003/09/17
投稿数: 8
投稿日時: 2003-09-17 23:42
struts1.1を使用してWebアプリケーションを作成しています。
現在、標題の件について悩んでいます。

-------アプリケーションの流れ---------------
@ユーザが情報を入力できるページ
その中にはtextarea(名前をmessageとする)があり
ユーザは改行を入力することが可能である。
A入力した内容を確認するページ
ユーザが入力した内容を表示する時、JSPでbeanタグを
使用している。
<bean:write name="inputForm" propertie="message"/>

@でユーザが改行を入力していると、Aで改行が表示されません。
どうしたら宜しいでしょうか?
どなたかご教授頂けないでしょうか?
よろしくお願いいたします。
teto
ベテラン
会議室デビュー日: 2002/07/31
投稿数: 61
投稿日時: 2003-09-18 00:00
はじめまして。

1)Actionクラスで、改行コードを<br>置換しそれをrequest scopeでsetAttributeし
bean:writeタグで表示。

2)
<bean:define id="inputMsg" name="inputForm" propertie="message"/>
<%=JSPUtility.replaceCRLF(inputMsg)%>
*JSPUtility#replaceCRLF( String)はHTMLタグのエスケープと
改行コードの<br>置換を行うスタティックメソッド

3) 2のような処理をおこなうカスタムタグを探すか作る。

ぐらいかなぁ?

のぶ
会議室デビュー日: 2003/01/09
投稿数: 11
お住まい・勤務地: とちぎ
投稿日時: 2003-09-18 01:11
単純に見た目の問題なら
<pre><bean:write name="inputForm" propertie="message"/></pre>
で良いのでは?

こざる
会議室デビュー日: 2003/09/17
投稿数: 8
投稿日時: 2003-09-18 09:37
ご教授ありがとうございます。
いろいろなやり方があるんですね。。
見た目の問題でしたので、取り合えず<pre>を使用してみました。
できるようになりました。
ありがとうございます。。

tetoさんが教えてくださったやり方も確認してみたいと思います。
Hush
会議室デビュー日: 2002/04/23
投稿数: 13
投稿日時: 2003-09-18 13:22
preタグを使うと問題となることがあります。
それはtableの内部に表示する場合などです。

tableのサイズを指定していた場合、preタグを使わないとテーブルサイズの内部にテキストを表示するように、テキストに勝手に改行を入れてくれます。
通常であればそういった動作が好ましいはずです。
しかしpreで括ってしまうと、自動的な改行は一切行われなくなり、その結果表示が崩れてしまうことが多いです。

したがって私の場合は、JSP内部で正規表現を使って改行コードを<br>に置き換えてから表示するようにしています。以下にそのサンプルを載せておきます。

===========================================================================

<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/taglibs/regexp-1.0" prefix="rx" %>
<rx:regexp id="replaseToBr">s/\n/<br\/>/gm</rx:regexp>

<rx:text id="rxProperty"><bean:write name="name" property="property"/></rx:text>
<rx:substitute regexp="replaseToBr" text="rxProperty"/>

===========================================================================

正規表現の利用にはJakartaのタグライブラリを利用しています。
ただちょっと面倒なので、やはりそれようのタグライブラリを作成したほうが後々便利かもしれません。
こざる
会議室デビュー日: 2003/09/17
投稿数: 8
投稿日時: 2003-09-18 21:21
Hushさん、ありがとうございます。

<pre>タグを使用したところ、tableタグで英文字列の見栄えをきれいにするためにword-break:break-all;を使っていたため、うまくできませんでした。。
サンプルを元にそれ専用のタグを作成してみようと思います。

どうもありがとうございました。。
1

スキルアップ/キャリアアップ(JOB@IT)