【问题标题】:xpages bootstrap date picker error save valuexpages 引导日期选择器错误保存值
【发布时间】:2014-10-02 17:06:04
【问题描述】:

我使用了来自Bootstrap4XPages 的日期选择器工具。

但是我有这个问题 在后端,日期字段始终设置在一月 如果您在从日历选择器中选择后单击***设置为阅读模式***,您也可以尝试进入在线演示...在阅读模式下您会看到错误的值。

例如,如果我选择 12-02-2015(2015 年 2 月 12 日) 储蓄值始终为 ....2015 年 1 月 12 日...每个月都设置为 1 月...

你有什么建议吗?

来自 Bootstrap4XPages 的自定义控件的更新源代码

    <?xml version="1.0" encoding="UTF-8"?>
<xp:view
    xmlns:xp="http://www.ibm.com/xsp/core">

    <!--
        note: this date picker depends on a number of files: - bootstrap 3+ - bootstrap-datepicker
        (https://github.com/eternicode/bootstrap-datepicker) - jquery
    -->

    <!-- js & css for plugin -->
    <xp:this.resources>
        <xp:script
            src="/eternicode-datepicker-1.3/js/bootstrap-datepicker.js"
            clientSide="true">
        </xp:script>
        <xp:styleSheet
            href="/eternicode-datepicker-1.3/css/datepicker3.css">
        </xp:styleSheet>
    </xp:this.resources>

    <xp:text
        escape="true"
        id="computedField1"
        value="#{compositeData.fieldDataSource[compositeData.fieldName]}"
        rendered="#{javascript:!compositeData.fieldDataSource.isEditable()}">
        <xp:this.converter>
            <xp:convertDateTime
                type="date"
                dateStyle="full"></xp:convertDateTime>
        </xp:this.converter>
    </xp:text>

    <xp:div
        styleClass="input-group date"
        id="dateC"
        rendered="#{javascript:compositeData.fieldDataSource.isEditable()}">

        <xp:inputText
            styleClass="form-control"
            size="16"
            id="inputDatum"
            value="#{compositeData.fieldDataSource[compositeData.fieldName]}">
            <xp:this.attrs>
                <xp:attr
                    name="placeholder"
                    value="#{javascript:compositeData.dateFormat.toLowerCase()}">
                </xp:attr>
            </xp:this.attrs>
            <xp:this.converter>
                <xp:convertDateTime
                    type="date"
                    pattern="${compositeData.dateFormat}">
                </xp:convertDateTime>
            </xp:this.converter>
        </xp:inputText>
        <span
            class="input-group-addon">
            <i
                class="glyphicon glyphicon-calendar"></i>
        </span>
    </xp:div>

    <xp:scriptBlock
        id="scriptBlock2">
        <xp:this.value><![CDATA[
        var options = {};

        if ( null != "#{compositeData.options}" ) {
            options = #{javascript:toJson(compositeData.options)};
        }

        options.format = "#{compositeData.dateFormat}";

$(function(){
    //initialize date picker
    x$('#{id:dateC}').datepicker(options);

});
]]></xp:this.value>
    </xp:scriptBlock>

</xp:view>

这是 XPages 的代码

    <xc:ccBS_DatePicker
                                dateFormat="dd-mm-yyyy"
                                fieldDataSource="#{document1}"
                                fieldName="data">
                                <xc:this.options><![CDATA[#{javascript:return {
    daysOfWeekDisabled: "0,6",
    autoclose: true,
    todayBtn: "linked",
    todayHighlight: true
}}]]></xc:this.options>
                            </xc:ccBS_DatePicker>

【问题讨论】:

  • 只是评论:该字段的内容在阅读模式下本地化(错误的月份 - Január,在我的语言中),在编辑模式下月份是正确的并且未本地化(我希望,基于浏览器设置)。所以它似乎是被破坏的实现。
  • @Frantisek Kossuth:对我来说是一个转换器错误......因为在notes文档后端(NotesDatTime字段)中,值是写在一月份
  • 我不这么认为——当我从阅读模式返回到编辑模式时,月份又是正确的。
  • @Frantisek Kossuth 好的,但是您如何解释数据是在 1 月的日期写入后端的事实?
  • 请提供源码。可能是绑定问题

标签: xpages xpages-ssjs


【解决方案1】:

问题是由Bootstrap4XPages 演示数据库中的错误引起的:嵌入日期选择器的自定义控件上的转换器的日期格式指定为dd-mm-yyyy。那应该是 dd-MM-yyyy(大写 M):与 Java SimpleDateFormat 类使用的标准相同。

演示数据库中使用的日期选择器是 this 一个来自 eternicode。配置时使用小写的 m 来指定日期格式。

我已经更新了演示数据库来处理这个问题:在自定义控件中,您必须使用 Java 语法指定要使用的格式(例如“dd-MM-yyyy”)。在我将选项传递给日期选择器的自定义控件中,我将大小写修改为正确的格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多