2017-04-06 64 views
0

在一个XPage我有一个inputText的控制:保存日期与Java:这个字段是不是有效的日期

<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月6日

当我想救我的目标,我得到以下信息这个领域:

这个字段是不是有效的日期

任何人能告诉我什么可以是这个原因,我应该怎么纠正我的代码?

+1

如果inputText的value属性值未定义,则会出现此错误消息。确保'employeeBean','employeeBean.getEmployee()'和'employeeBean.getEmployee().setDateOfEmployment(NotesDateTime)'可用 –

+0

Hello Knut,你是说我应该将Date属性的类型从Date更改为NotesDate time在我的Employee类中? – Malin

+0

我尝试过以下方法:NotesContext nct = NotesContext.getCurrent(); \t \t \t Session session = nct.getCurrentSession(); \t \t \t doc.replaceItemValue(“since”,session.createDateTime(employee.getDateOfEmployment()));当xp:inputText控件使用诸如“2015年10月6日”之类的格式时,这起作用。如果我将格式更改为“2015/10/06”,则会失败。这最后一种格式是我想要使用的格式,因为我希望用户更习惯于使用这种格式。 – Malin

回答

1

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> 
+0

Hello Mark,转换器工作正常。感谢您的帮助。但是可以存储没有时间戳的日期吗?如果我通过Notes表单保存文档,那么我只保存了明文日期值。坦率地说,我对一个人的特定时间不感兴趣:-) – Malin

+0

既然你已经在使用一个bean,你可以在后端处理它。 'dateOfEmployment'可能已经是日期。将它作为'NotesDateTime'存储在文档中时,可以在'NotesDateTime'上调用'setAnyTime()',然后将其存储在字段中。 –

+0

除了Mark的答案,这也包括在这个问题中http://stackoverflow.com/questions/14439726/xpages-date-only-fieldonly –

相关问题