如何使fmt:formatDate适用于表单:输入

Hel*_*eat 15 jsp jstl spring-mvc date-format

我有一个jstl循环,我想格式化表单的日期:输入.我已经尝试了许多我喜欢在线的建议的排列,但是我无法让它工作..有人可以看一下吗?

我已经为上下文包含了完整的循环,但问题出在最后一个<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>
Run Code Online (Sandbox Code Playgroud)

我最近的问题是:

JSPG0055E:无法从name [transactions [] value [$ {loopStatus.index}]创建xml属性

JB *_*zet 21

您不能在另一个JSP标记的属性中使用JSP标记.在页面属性中存储日期格式的结果,并使用此页面属性(就像在Java中使用变量一样):

<fmt:formatDate value="transactions['${loopStatus.index}'].valueTransactionDate"  
                type="date" 
                pattern="yyyy-MM-dd"
                var="theFormattedDate" />
<form:input type="text" path="..." value="${theFormattedDate}"/>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!这几乎做到了。我只需要在 value 属性 value="${valueTransactionsModel.transactions[loopStatus.index].valueTransactionDate}" 中引用模型 (2认同)

小智 7

在Spring JSTL标签的最新版本中,您不能将属性值用于de tah形式:input.如果你尝试,你会收到一个value attribute is not valid for tag <form:input>错误.

在这种情况下,您必须使用普通的HTML输入标记并将路径作为输入的名称来触发绑定到Spring表单,如下所示

<fmt:formatDate var="fmtDate" value="${form.bean.dateProperty}" pattern="dd/MM/yyyy"/>
<input type="text" name="bean.dateProperty" value="${fmtDate}"/>
Run Code Online (Sandbox Code Playgroud)

丑陋但对我有用!;)