- PR -

で空行が含まれてしまう。。。

投稿者投稿内容
にぃにぃ
ベテラン
会議室デビュー日: 2006/10/19
投稿数: 70
投稿日時: 2006-11-06 13:42
お世話になっております。

StrutsによるJSPの出力です。

ループで別ファイルからHTMLタグを呼んでJSP出力をしているのですが、
JSPソースに<TD></TD>を追加するとテーブルとテーブルの
間に空行が入ってしまいます。<bean:write name="○○"/>にして
HTMLタグをそのまま表示させるようにすると、
きちんと空行も入っておらずきちんと表示されているのですが。

<td></td>を外すと空行もなく問題なく詰めて表示されます。
にぃにぃ
ベテラン
会議室デビュー日: 2006/10/19
投稿数: 70
投稿日時: 2006-11-06 16:13
原因を突き止めているのですが、どうやら<TD>タグにはさまれている
表示する情報の後ろに全角のスペースが含まれているようです。

その全角スペースを削除したいのですが、HTMLタグで何かありますでしょうか。
<td>
○○
</td>
という書き方ではなく
<td>○○</td>と記述しています。

そもそも、何故全角スペースが含まれるのか分かりません。
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2006-11-06 16:38
引用:

初心者マークさんの書き込み (2006-11-06 16:13) より:
原因を突き止めているのですが、どうやら<TD>タグにはさまれている
表示する情報の後ろに全角のスペースが含まれているようです。

その全角スペースを削除したいのですが、HTMLタグで何かありますでしょうか。
<td>
○○
</td>
という書き方ではなく
<td>○○</td>と記述しています。

そもそも、何故全角スペースが含まれるのか分かりません。



邪推ではずしているかもしれません。
あくまで仮定の話です。

<bean:write name="○○"/>
出力対象にTrimかけてみるのはいかがでしょう?

想定している桁数とDBの実際の桁数がずれていて、
HTMLのテーブル内部改行業されている可能性があります。

<bean:define name="○○" type="java.lang.String">

<% String ○× = ○○.Trim() %>
使ってその後に
<bean:write name="○×"/>
として、意図どおりの出力があれば、
DBの桁が表示の桁とずれてるって事ですね。

もしそうだとするのであれば、
HTMLのデザインがDBのけた考慮していないって事になるんじゃないかと。

デザインの作り直しになるかもしれませんね。
まぁ、フォントでごまかすかもしれませんが。
_________________
にぃにぃ
ベテラン
会議室デビュー日: 2006/10/19
投稿数: 70
投稿日時: 2006-11-06 17:39
スペースのせいではないようです。フォントを小さくしてもテーブルと
テーブルのスペースが開いてしまいます。

なぜか分かる方いらっしゃいましたら、ご教授お願い致します。
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2006-11-06 18:24
るぱんです。

差し支えなければ、ソースを乗せて頂けますか?
_________________
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2006-11-06 19:20
「テーブルとテーブルの間」となっているのに、セル1つについてだけ書いても、原因を推測するのは難しいですよ。
もう少し全体的にどうなっているのか、説明してみてください。
mandm
常連さん
会議室デビュー日: 2005/06/04
投稿数: 30
お住まい・勤務地: ニューヨーク
投稿日時: 2006-11-07 04:16
たしかに、上の文章だと HTMLの全体構造が 想像できないのですが、

>表示する情報の後ろに全角のスペースが含まれているようです

本当に 全角スペースが入っているなら

1.値自体に スペースが入っている( 全角なのでtrim()では 消せない)
とか
2.Tdに対して なぜか 全角スペースをつける CSSが定義されている

>テーブルとテーブルの 間に空行が入ってしまいます。

2つのテーブルが 2つのTDに入っているってことでしょうかねえ?1つのTDに2つのテーブルを入れると うまくいかないことがおおいです。
あとは、HTML Table内のTDの数が、すべてのTR であっていないか colspan が失敗している。


テーブルの形がおかしいのであれば、JSPよりもまず
出力されているHTMLの構造を しっかりみれば わかると思います。
適当なHTMLエディターで HTMLの構造をチェックして
それで、変なHTMLができていれば JSPのバグを見つけて直す。

ってのはどうでしょうか
にぃにぃ
ベテラン
会議室デビュー日: 2006/10/19
投稿数: 70
投稿日時: 2006-11-07 09:49
パラメータファイルを別のファイルからHTMLのテーブル定義等を読み込んでいます。パラメータファイルには
(,<TABLE BORDER=1 CELLSPACING=0 Width=950,,)
(,<TR>,,)
(0,,,) //csvの0番目のデータを表示
(1,,,) //csvの1番目のデータを表示
・・・
というデータ情報が入っていて、
csvファイルを読み込みパラメータファイルの第一パラメータがNULLで無い場合
CSVのn番目の項目を<TD></TD>の中に設定する。
第一パラメータがNULLの場合、無視して第二パラメータを表示する。

<logic:iterate id="csvToken" name="BMIForm" property="csvParam"
indexId="csvVertical">
<!--csvParamは2次元配列。1行づつループします-->
<logic:iterate id="bodyToken" name="BMIForm" property="bodyParam"
offset="0"                                indexId="vertical">
    <% empty2=false; %><!--bodyParamは2次元配列。1行づつループします-->
<logic:iterate id="bodyToken2" collection='<%= bodyToken %>' offset="0"
indexId="horizontal">
<!--bodyParamを1トークンづつループします-->
<logic:equal name="horizontal" value="0" >

<logic:empty name="bodyToken2">
<% empty2=true; %>
</logic:empty>

<logic:notEmpty name="bodyToken2">
<logic:iterate id="csvToken2" collection='<%= csvToken %>'
indexId="csvHorizontal">

<logic:equal name="bodyToken2" value="0">
           <logic:equal name="csvHorizontal" value="0">
<TD><bean:write name="csvToken2" filter="false"/>
    </TD>
  </logic:equal></logic:equal>

  <logic:equal name="bodyToken2" value="1">
           <logic:equal name="csvHorizontal" value="1">
<TD><bean:writeme="csvToken2" filter="false"/>/TD>
</logic:equal></logic:equal>

<logic:equal name="bodyToken2"value="2">
<logic:equal name="csvHorizontal" value="2">
<TD><bean:write name="csvToken2" filter="false"/></TD>
</logic:equal></logic:equal>

<logic:equal name="bodyToken2" value="3">
<logic:equal name="csvHorizontal" value="3">
<TD><bean:write name="csvToken2" filter="false"/></TD>
</logic:equal></logic:equal>

<logic:equal name="bodyToken2" value="4">
<logic:equal name="csvHorizontal" value="4">
<TD><bean:write name="csvToken2" filter="false"/></TD>

</logic:equal></logic:equal>

<logic:equal name="bodyToken2" value="5">
<logic:equal name="csvHorizontal" value="5">
<TD><bean:write name="csvToken2" filter="false"/></TD>

</logic:equal></logic:equal>

<logic:equal name="bodyToken2" value="6">
<logic:equal name="csvHorizontal" value="6">
<TD><bean:write name="csvToken2" filter="false"/></TD>

</logic:equal></logic:equal>

<logic:equal name="bodyToken2" value="7">
<logic:equal name="csvHorizontal" value="7">
<TD><bean:write name="csvToken2" filter="false"/></TD>

</logic:equal></logic:equal>
</logic:iterate>  
</logic:notEmpty>

</logic:equal>

<logic:equal name="horizontal" value="1" >
<% if(empty2)
{ %>
<TD><bean:write name="bodyToken2" filter="false"/></TD>
<% }else{
%>
<% } %>
</logic:equal>

<logic:equal name="horizontal" value="2" >
</logic:equal>

<logic:equal name="horizontal" value="3" >
</logic:equal>
</logic:iterate>
</logic:iterate>

</logic:iterate>
ちょっと複雑なコードですが、ご検討をお願い致します。

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