2017-04-06 70 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 –

相關問題