2016-01-25 12 views
8
<table> 
<c:if test="${output.list == nul}"> 
<tr><td><input type="text" /><select></select><input type="text" /> 
</td> 
</tr> 
</c:if> 
<c:forEach var="iter" items="${output.list}"> 
<tr><td><input type="text" /><select></select><input type="text" value="${iter.getVal()}" /> 
</td> 
</tr> 
</c:forEach> 
</tbody> 
</table> 

もし私の${list}は、どのように私はコードを複製またはJavaScriptを使用しなくても.clone行を表示することができ、空のですか?簡素化、デフォルトの表示1行

+0

空の行だけを表示したいですか? –

+0

@KenBekovいいえ、現在は空の行を表示しますが、 'tr .clone'を表示したい – bumbumpaw

+0

' .clone'を表示するには、とにかく 'iter'が必要です。あなたのリストが空であればどこから 'iter'を得るのですか? –

答えて

2

あなたの問題を理解しているかどうかわかりません。あなたはすべてのコンテンツを出力1行をしたい場合は、リストが空の場合、次のアプローチを試してみてください。変更に従って質問:fn:名前空間だけUDATE

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>あなたのファイルの開始で追加の使用のために

<table> 
     <c:forEach var="i" begin="0" end="${not empty list?(fn:length(list)-1):0}"> 
      <tr class="clone"> 
      <td> 
       <input type="text" /> 
       <select></select> 
       <input type="text" value="${list[i]!=null?list[i].getVal():''}" /> 
      </td> 
      </tr> 
     </c:forEach> 
</tbody> 

変更

+0

ありがとう、現在最も簡単なアプローチ。 – bumbumpaw

1

リストが空の場合は、リストに空の値を追加します。サーブレットまたはJSPで行うことはできますが、JSPで追加のJavaコードを記述してリストを変更する必要があります。

<table> 
<c:set var="list" value="${output.list}"/> 
<c:if test="${empty list && list != null}"> 
    ${list.add(null)} 
</c:if> 
<c:forEach var="iter" items="${list}"> 
<tr><td><input type="text" /><select></select><input type="text" value="${iter.getVal()}" /> 
</td> 
</tr> 
</c:forEach> 
</tbody> 
</table> 
+0

これがリストが使用される最後の場所でない場合はどうなりますか?リストを他の場所で使用するとどうなりますか?空のリストにnullが含まれていると予想する人はいません。 –

+0

@KenBekov空リストが他のどこかで使われているのを私は見ていません。 JSPで使用されるリストは、空であればインスタンス化できます。 –