2012-07-31 34 views
13

Tengo un bucle jstl y quiero formatear la fecha de un formulario: entrada. He intentado muchas permutaciones de algunas de las sugerencias que me gustan en línea pero no puedo hacer que funcionen. ¿Alguien puede echar un vistazo?Cómo hacer que fmt: formatDate funcione para la forma: entrada

He incluido el ciclo completo para el contexto pero el problema está en el último bloque <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> 

Mi edición más reciente es:

JSPG0055E: No se puede crear un atributo xml del nombre [transacciones [] Valor [$ {} loopStatus.index]

Respuesta

17

no puede utilizar una Etiqueta JSP en un atributo de otra etiqueta JSP. Almacenar el resultado del formato de fecha en un atributo de página, y utilizar este atributo de página (como lo haría con una variable en Java):

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

Gracias! Eso prácticamente lo hizo. Solo tuve que hacer referencia al modelo en el valor value value = "$ {valueTransactionsModel.transactions [loopStatus.index] .valueTransactionDate}" – HellishHeat

5

En las últimas versiones de las etiquetas JSTL primavera no se puede utilizar el valor del atributo en la forma de tah: entrada. Si lo intenta, obtendrá un error value attribute is not valid for tag <form:input>.

En este caso se debe utilizar una etiqueta HTML de entrada normal y poner la ruta como el nombre de la entrada para activar la unión a la forma como esta primavera

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

feo, pero funciona para mí! ;)

+0

En realidad, esto funciona ... gracias: D –

Cuestiones relacionadas