2012-07-31 19 views
13

Mam pętlę jstl i chcę sformatować datę formularza: input. Próbowałem wielu permutacji niektórych sugestii, które mi się podobały w Internecie, ale po prostu nie mogę tego uruchomić. Czy ktoś może mi się przyjrzeć?Jak zrobić fmt: formatDate działa dla formularza: input

Zawarłem pełną pętlę dla kontekstu, ale problem leży w ostatnim bloku <td></td>.

<c:forEach items="${valueTransactionsModel.transactions}" var="transaction" varStatus="loopStatus"> 

         <tr class="${loopStatus.index % 2 == 0 ? 'even' : 'odd'}"> 
          <spring:message code="valueTransactions.transactionType" var="transactionTypeLbl" /> 
          <tags:dropdown id="transactionTypeId${loopStatus.index}" path="transactions['${loopStatus.index}'].valueTransactionType.id" 
           fieldName="${transactionTypeLbl}" classStyle="mandatory" items="${transactionTypes}" itemLabel="value"/> 
         </tr> 
         <tr class="${loopStatus.index % 2 == 0 ? 'even' : 'odd'}"> 
          <spring:message code="valueTransactions.transactionAmount" var="valueTransactionAmountLbl${loopStatus.index}" /> 
          <tags:input id="transactionAmountId${loopStatus.index}" 
           path="transactions['${loopStatus.index}'].valueTransactionAmount" 
           fieldName="valueTransactionAmountLbl${loopStatus.index}" 
           maxlength="30" classStyle="mandatory" /> 
          <spring:message code="valueTransactions.transactionDate" 
           var="valueTransactionDateLbl${loopStatus.index}" /> 
          <td> 
           <form:input type="text" path="transactions['${loopStatus.index}'].valueTransactionDate" cssClass="mandatory" value="<fmt:formatDate value="transactions['${loopStatus.index}'].valueTransactionDate" type="date" pattern="yyyy-MM-dd"/>" /> 
          </td> 
         </tr> 


      </c:forEach> 

Moje ostatnie zagadnienie jest:

JSPG0055E: Nie można utworzyć atrybut xml z nazwy [transakcje [] wartość [$ {loopStatus.index}]

Odpowiedz

17

Nie można użyć Tag JSP w atrybucie innego znacznika JSP. Przechowywać wynik formatowania dat w atrybucie strony i korzystać z tego atrybutu strony (jak można zrobić ze zmienną w Javie):

<fmt:formatDate value="transactions['${loopStatus.index}'].valueTransactionDate" 
       type="date" 
       pattern="yyyy-MM-dd" 
       var="theFormattedDate" /> 
<form:input type="text" path="..." value="${theFormattedDate}"/> 
+1

Dzięki! To prawie to zrobiło. Musiałem tylko odwołać się do modelu w wartości atrybutu value = "$ {valueTransactionsModel.transactions [loopStatus.index] .valueTransactionDate}" – HellishHeat

5

W najnowszych wydaniach sprężyny JSTL tagów nie można używać wartość atrybutu do postaci de tah: input. Jeśli spróbujesz, otrzymasz komunikat o błędzie value attribute is not valid for tag <form:input>.

W tym przypadku należy użyć normalnego tag wejściowy HTML i umieścić ścieżkę jak nazwa wejścia do wyzwalania wiązanie postaci wiosennego tak

<fmt:formatDate var="fmtDate" value="${form.bean.dateProperty}" pattern="dd/MM/yyyy"/> 
<input type="text" name="bean.dateProperty" value="${fmtDate}"/> 

brzydki, ale działa na mnie! ;)

+0

Właściwie to działa ... dziękuję: D –