【问题标题】:XPages - save date only in Date fieldXPages - 仅在日期字段中保存日期
【发布时间】:2013-10-28 13:54:23
【问题描述】:

我正在使用编辑框控件来显示日期字段。保存 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 中,字段类型现在是文本而不是日期/时间,这是我所希望的。

【问题讨论】:

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


【解决方案1】:

这段代码对我有用:

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

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

替代方法是在 querySaveDocument 事件中执行 computeWithForm

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

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

@Date(@ThisValue)

computeWithForm 性能较差,有时会对字段值造成副作用,但可能是一个很好的解决方案,尤其是当您有很多此类仅日期字段时。

【讨论】:

  • 非常感谢这个伟大的解决方案!
【解决方案2】:

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

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

或者您可能需要获取Document

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

【讨论】:

  • 我试过了,但notes中的“dateReparatur”字段是空的。
  • 您是否尝试使用未绑定到 XPage 上的任何字段的项目名称?这是检查它是否有效的好方法。
  • 嗨,谢谢,但我决定采用 Knut 的解决方案,因为它运行良好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多