XPages - 仅在日期字段中保存日期

时间:2013-10-28 13:54:23

标签: xpages lotus-notes lotus-domino xpages-ssjs

我正在使用“编辑框”控件来显示日期字段。保存XPage时,我只想保存日期(现在保存日期和时间)。有没有办法做到这一点?

这是我的代码:

<xp:inputText id="dateReparatur" value="#{document1.dateReparatur}">
<xp:this.converter>
<xp:convertDateTime type="date" dateStyle="long">
</xp:convertDateTime>
</xp:this.converter>
<xp:dateTimeHelper></xp:dateTimeHelper>
</xp:inputText></xp:td>

更新:我现在已经实现了以下代码:

var dt = currentDocument.getItemValueDateTime("dateReparatur");
var dateonly = dt.getDateOnly();
currentDocument.replaceItemValue("dateReparatur",dateonly);

这只给了我日期,但是在Notes中,字段类型现在是文本而不是日期/时间,这是我希望的。

2 个答案:

答案 0 :(得分:2)

此代码对我有用:

    <xp:this.postSaveDocument><![CDATA[#{javascript:
        var dt:DateTime = document1.getItemValueDateTime("dateReparatur");
        dt.setAnyTime();
        currentDocument.getDocument(true).replaceItemValue("dateReparatur", dt); 
        currentDocument.getDocument(true).save()
    }]]></xp:this.postSaveDocument>

enter image description here

它仅适用于postSaveDocument事件。如果将相同的代码放入querySaveDocument事件(当然没有文档save()行),则日期字段会在保存期间被事件后的时间污染。

替代是在computeWithForm事件中执行querySaveDocument

<xp:this.querySaveDocument><![CDATA[#{javascript:
    document1.getDocument(true).computeWithForm(true, true)
}]]></xp:this.querySaveDocument>

您必须在表单中添加Input Translation公式到日期字段:

@Date(@ThisValue)

computeWithForm性能不佳并且有时会对字段值产生副作用,但可能是一个很好的解决方案,尤其是如果你有很多这样的仅限日期的字段。

答案 1 :(得分:1)

getDateOnly()返回一个字符串。试试这个:

dt.setAnyTime();
currentDocument.replaceItemValue("dateReparatur", dt);

或者您可能必须获得Document

currentDocument.getDocument(true).replaceItemValue("dateReparatur", dt);