2016-06-15 19 views
0

JSPの「編集」ページを作成して、ユーザーの詳細を編集しようとしています。 詳細の1つは、アドレスのArrayListです。 人が住所を持たない場合、ArrayListは空であるかもしれませんが。JSTL:空のリストに入力フィールドが表示されない

私の問題は編集ページの入力フィールドにあります。 私は次のようにArrayListのを表示しようとしています...

<c:forEach items="${person.details.addressList}" var="address">     
    <label>Street: 
    <input type="text" id="psnStreet" name="street" value='${address.street}'> 
    </label> 
    <label>City: 
    <input type="text" id="psnCity" name="city" value="${address.city}" > 
    </label> 
    <label>State: 
    <input type="text" id="psnState" name="state" value="${address.state}" > 
    </label> 
    <label>Postal Code: 
    <input type="text" id="psnPCode" name="postalCode" value="${address.postalCode}" > 
    </label> 
    <label>Country: 
    <input type="text" id="psnCountry" name="country" value="${address.country}" > 
    </label> 
</c:forEach> 

問題は、ArrayListのが空の場合、入力フィールドがページに表示されないということです!アドレスを追加することはほとんど不可能です。

これはJSTLでどのように処理されますか?

+0

ただ、リストが空の場合は、単に新しいアドレスを追加することによって、モデルを用意し、コントローラでチェック!それとも不合理なのでしょうか? – BalusC

答えて

0

最初に、idを繰り返して入力すると、ページ上に重複してidが作成されるためです。

第二に、あなたはリストが空であるかどうかを確認し、その後、他のフレーズにあなたが繰り返しをやっていき

<c:if test="${empty person.details.addressList}"> 

を使用して入力を示すべきです。

あなたは次のような <c:if test>で処理することができます
+0

私のコメントを上記の答えに読み、あなたの意見をお聞かせください。 – edcincy

0

....

//When your array list is not empty,you will see with datas 
    <c:if test='${not empty "${person.details.addressList}"}'> 
        <c:forEach items="${person.details.addressList}" var="address">     
      <label>Street: 
      <input type="text" id="psnStreet" name="street" value='${address.street}'> 
      </label> 
      <label>City: 
      <input type="text" id="psnCity" name="city" value="${address.city}" > 
      </label> 
      <label>State: 
      <input type="text" id="psnState" name="state" value="${address.state}" > 
      </label> 
      <label>Postal Code: 
      <input type="text" id="psnPCode" name="postalCode" value="${address.postalCode}" > 
      </label> 
      <label>Country: 
      <input type="text" id="psnCountry" name="country" value="${address.country}" > 
      </label> 
     </c:forEach> 
     </c:if> 
//When your array list is empty,you will see blank fields 
     <c:if test="${empty person.details.addressList}"> 
     <c:forEach items="${person.details.addressList}" var="address">     
     <label>Street: 
     <input type="text" id="psnStreet" name="street"> 
     </label> 
     <label>City: 
     <input type="text" id="psnCity" name="city"> 
     </label> 
     <label>State: 
     <input type="text" id="psnState" name="state"> 
     </label> 
     <label>Postal Code: 
     <input type="text" id="psnPCode" name="postalCode"> 
     </label> 
     <label>Country: 
     <input type="text" id="psnCountry" name="country"> 
     </label> 
    </c:forEach> 
     </c:if> 
+0

しかし、基本的に私は入力フィールドを複製しなければならないと言っています! リストが空でない場合は、値とともに入力を表示します。 リストが空の場合、空白の入力フィールドの別のグループを表示する必要があります。 これを行う別の方法はありませんか? – edcincy

+0

あなたの要件は何ですか? ArrayListが空の場合、何をしたいのですか? arrayListが空の場合は、入力フィールドに値を追加しないでください。 –

+0

必要条件は、ユーザーが既存の値を編集できるように入力ボックスを表示するか、空白の値を追加することです。 たとえば、市区町村、州、郵便番号および国が存在する場合は、値の入った入力ボックスを表示します。しかし、私はまた、ユーザーがストリートを追加できるように空の入力ボックスを表示する必要があります。 問題は、空であるaddressListフィールド(この例では通り)では入力ボックスが表示されないことです。 – edcincy

関連する問題