【问题标题】:XPages - modify display of Dojo Time Text boxXPages - 修改 Dojo 时间文本框的显示
【发布时间】:2013-12-05 12:55:11
【问题描述】:

我在我的 XPage 上使用 Dojo Time 文本框。当我在此字段中保存时间时,显示的时间有一个“T”前缀。有什么办法可以去掉这个“T”?这是我的代码:

<xp:inputText id="EventEndTime" value="#{document1.EventEndTime}"         style="width:160px;"
role="button" title="used to pick a meeting time" required="true"
dojoType="dijit.form.TimeTextBox"
disableClientSideValidation="true">
<xp:this.dojoAttributes>
<xp:dojoAttribute    name="required"  value="false">
</xp:dojoAttribute>                           
</xp:this.dojoAttributes>                                
</xp:inputText>                                                                                                       

【问题讨论】:

  • 请在此处阅读:dojotoolkit.org/reference-guide/1.9/dijit/form/TimeTextBox.html 他们提到了 T 的原因,但表示当您以编程方式获取值时,返回值将是本机 javascript 日期对象。
  • 谢谢,我已经阅读了这篇文章,但恐怕我仍然不确定我需要做什么来更改字段值的显示。
  • 我有点不知所措,您从哪里获得价值以及将其保存在哪里?请澄清。

标签: dojo xpages lotus-notes


【解决方案1】:

您可以向 inputText 控件添加自定义转换器,该转换器在保存之前删除“T”并在呈现页面期间添加“T”:

<xp:this.converter>
    <xp:customConverter>
        <xp:this.getAsObject><![CDATA[#{javascript:value.substring(1)}]]></xp:this.getAsObject>
        <xp:this.getAsString><![CDATA[#{javascript:"T" + value}]]></xp:this.getAsString>
    </xp:customConverter>
</xp:this.converter>

这种方式将时间保存为字符串,如“hh:mm:ss”而不是“Thh:mm:ss”。

您也可以使用自定义转换器将值保存为 Notes 时间值。

【讨论】:

  • 非常感谢这个解决方案
  • 请注意:当您将其保存回 DateTime Notes 项目时,您可能无法恢复干净的时间。在任何情况下都可以存储到 TextItem 中。
  • @stwissel:我上面的示例代码将时间存储为文本项。我添加了我的最后一句话来说明 customConverter 也可以用于什么。没错,DateTime Notes 项目使用起来更复杂,但可能会处理本地时间,例如
  • 转换器的方法简单而优雅——喜欢它
【解决方案2】:

Domino 实际上并不存储“仅时间”,因此您需要先使用 viewScope 变量绑定到您的 TimeTextBox,然后使用加载和保存事件来写入/读取它。我会使用SimpleDateFormat 类进行转换,这比手动字符串操作更舒服。实际上,一个小的 Java 助手类在这里可以创造奇迹。

或者,您可以使用过滤器来清理它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    相关资源
    最近更新 更多