JSF 2.0 + Primefaces 2.x: 将字符串绑定到日历

3
我有一个JavaBean,里面包含一个类型为java.lang.String的字段。这个字段包含自由格式的文本,可以代表数字、字符串或日期。当该字段表示日期时,我在屏幕上呈现一个日历(使用PrimeFaces),否则将呈现输入框。
我的问题是,用户通过日历选择日期后,我希望写入自由格式字段的日期字符串具有特定的格式(MM/dd/yyyy)。当前设置的字符串具有java.util.Date对象进行toString()操作时所得到的默认格式。
请问有人知道如何控制写入我字段的字符串格式吗?
谢谢。
3个回答

1
我认为以下代码应该可以解决问题:
<p:calendar value="#{calTestBean.dateStr}" pattern="MM/dd/yyyy">
    <f:convertDateTime pattern="MM/dd/yyyy"/>
</p:calendar>

尽管我的情况稍有不同,但我有相同的问题。我有一个Primefaces动态表单,所以我的输入如下: 没有机会让它工作。我总是得到 toString() 表示。 - vortex.alex

1
假设您有一个名为“freeText”的字符串字段,具有getter和setter。添加一个返回日期的getter,并添加一个将日期转换为字符串的setter。两者都使用您想要的格式。例如:
String freeText;

String getFreeText() {
    return this.freeText;
}

void setFreeText(String freeText) {
    this.freeText = freeText;
}

Date getFreeTextAsDate() {
    try {
        if (this.freeText == null) {
            return null;
        }
        return new SimpleDateFormat("MM/dd/yyyy").parse(this.freeText);
    } catch (ParseException e) {
        return null;
    }
}

void setFreeTextAsDate(Date freeTextAsDate) {
    if (freeTextAsDate== null) {
        this.freeText = null;
    } else {
        this.freeText = new SimpleDateFormat("MM/dd/yyyy").format(freeTextAsDate);
    }
}

最后,在日历中使用 freeTextAsDate:
    <p:calendar value="#{yourBean.freeTextAsDate}" />

0
你可以使用PrimeFaces的calendar组件的pattern属性:pattern="MM/dd/yyyy",或者你可以使用Java的SimpleDateFormat类进行服务器端格式化和数据操作(以更好地控制字符串日期):
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Date myReceivedDate = dateFormat.parse(receivedStringDate);
String myNewDate = dateFormat.format(myReceivedDate);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接