【问题标题】:How to make fmt:formatDate work for form:input如何使 fmt:formatDate 为 form:input 工作
【发布时间】:2012-07-28 23:39:33
【问题描述】:

我有一个 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>

我最近的一期是:

JSPG0055E: 无法从名称 [transactions[] 值 [${loopStatus.index}] 创建 xml 属性

【问题讨论】:

    标签: jsp spring-mvc jstl date-format


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!这几乎做到了。我只需要在值属性 value="${valueTransactionsModel.transactions[loopStatus.index].valueTransactionDate}" 中引用模型
    【解决方案2】:

    在最新版本的spring JSTL 标签中,您不能将属性值用于de tah form:input。如果你尝试,你会得到一个value attribute is not valid for tag &lt;form:input&gt; 错误。

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

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

    丑陋但对我有用! ;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-15
      • 2010-10-25
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 2020-12-04
      相关资源
      最近更新 更多