使用Java保存日期:此字段不是有效日期

使用Java保存日期:此字段不是有效日期,java,date,xpages,Java,Date,Xpages,在xpage上,我有一个inputtext控件: <xp:inputText value="#{employeeBean.employee.dateOfEmployment}"> <xp:this.defaultValue><![CDATA[#{javascript:var dt:NotesDateTime = session.createDateTime("Today"); dt.adjustMont

在xpage上,我有一个inputtext控件:

<xp:inputText
                value="#{employeeBean.employee.dateOfEmployment}">
                <xp:this.defaultValue><![CDATA[#{javascript:var dt:NotesDateTime = session.createDateTime("Today");
dt.adjustMonth(-6);
return dt.getDateOnly();}]]></xp:this.defaultValue>

                <xp:this.converter>
                    <xp:convertDateTime type="date"></xp:convertDateTime>
                </xp:this.converter>
            </xp:inputText>

该值可以是,例如:2016-10-06

当我想保存我的对象时,我会收到此字段的以下消息:

此字段不是有效日期

有谁能告诉我这是什么原因,以及我应该如何更正我的代码吗?

函数
getDateOnly()
以字符串形式返回
NotesDateTime
的日期部分,但是对于需要存储日期的
xp:inputText
,您需要使用
java.util.date
。请尝试以下格式:

@Adjust( @Now(), 0, -6, 0, 0, 0,0);
您可能会注意到,在输入字段中返回的日期的格式不同,但这是输入控件/服务器将解释为日期的格式。如果需要不同的格式,您可以随时将转换器更改为以下格式:

<xp:this.converter>
         <xp:convertDateTime pattern="dd-MM-yyyy"></xp:convertDateTime>
</xp:this.converter>


如果inputText的value属性未定义,则会出现此错误消息。确保
employeeBean
employeeBean.getEmployee()
employeeBean.getEmployee().setDateOfEmployment(NotesDateTime)
在以下情况下可用:,你是说我应该在Employee类中将date属性的类型从date更改为NotesDate time吗?我尝试了以下方法:NotesContext nct=NotesContext.getCurrent();Session Session=nct.getCurrentSession();doc.replaceItemValue(“自”,session.createDateTime(employee.getDateOfEmployment());当xp:inputText控件使用类似“2015年10月6日”的格式时,该选项有效。如果我将格式更改为“2015/10/06”,则将失败。最后一种格式是我想使用的格式,因为我希望用户使用这种格式时更加自定义。我在inputText控件上应用了一个转换器,这似乎很好:你好,Mark,这个转换器工作得很好。谢谢你的帮助。但是,是否可以存储没有时间戳的日期?如果我想通过Notes表单保存文档,那么我只保存纯日期值。坦白地说,我对一个人的具体工作时间不感兴趣:-)因为你已经在使用一个bean,你可以在后端处理它<代码>雇用日期可能已经是一个日期。将其作为
NotesDateTime
存储在文档中时,可以在
NotesDateTime
上调用
setAnyTime()
,然后再将其存储在字段中。对于Mark的回答,如果您控制Java类,
Java.sql.Date
只包含日期部分,而不包含时间,那么这个问题也会涉及到这一点。如果您是通过API进行设置的,那么在最新版本的ODA中,您可以将
java.sql.Date
传递给
replaceItemValue()
,ODA将自动将其装箱,以便仅存储为日期。