首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在facelet中解析的日期字符串格式不正确

在facelet中解析的日期字符串格式不正确
EN

Stack Overflow用户
提问于 2013-04-23 05:36:46
回答 1查看 360关注 0票数 0

提供给我的数据来自数据库视图。一列包含逗号分隔的日期列表,因为日期来自一对多的表连接。所以现在我不得不在我的jsf facelet中解析和格式化。

代码语言:javascript
复制
 <ui:repeat value="#{chartController.reportData}" var="c" >
   <tr>
  ...other columns
     <td>
     <ui:repeat value="#{fn:split(c[41], ',')}" var="date">
        <h:outputText value="#{date}" >
             <f:convertDateTime pattern="MM/dd/yyyy" />
        </h:outputText><br />
     </ui:repeat>
     </td>
    </tr>
 </ui:repeat>



 public List<String> getReportData() {
     return reportData;
 }

但是,日期的格式不正确,它显示为30-OCT-11,但我需要将它转换为11/30/2011。当我处理不需要解析的单个值时,f:convertDateTime工作正常。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-23 09:01:39

在呈现HTML输出期间,<f:convertDateTime>从给定模式的java.util.Date实例转换为String,在处理表单提交期间,将给定模式的String转换为java.util.Date实例。它不会将模式X中的String转换为模式Y中的另一个String

问题的根本原因在于拥有一个相当糟糕的数据模型,其中所有内容都是字符串形式的。也许您一直使用ResultSet#getString()而不是ResultSet#getObject()。此外,一对多关系不应表示为逗号分隔的字符串,而应表示为集合或数组属性。

例如,此模型表示单个记录:

代码语言:javascript
复制
public class ReportDataItem {

    private List<Date> dates;

    // ...
}

其引用如下:

代码语言:javascript
复制
public List<ReportDataItem> getReportData() {
    return reportData;
}

并如下所示:

代码语言:javascript
复制
<ui:repeat value="#{chartController.reportData}" var="reportDataItem" >
    ...other columns
    <tr>
        <td>
            <ui:repeat value="#{reportDataItem.dates}" var="date">
                <h:outputText value="#{date}">
                    <f:convertDateTime pattern="MM/dd/yyyy" />
                </h:outputText>
                <br />
            </ui:repeat>
        </td>
    </tr>
</ui:repeat>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16157158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档