2014-10-01 45 views
0

我已经从Bootstrap4XPages使用datepicker工具。xpages引导日期选择器错误保存值

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

例如,如果我选择2015年12月2日(2015年2月12日) 保存值总是.... 2015年1月12日......每个月都被设置为一月...

有你有什么建议?

从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> 
+0

只是一个评论:该字段的内容是在阅读模式(错误的月份 - Január,用我的语言)本地化,在编辑模式下月份是正确的,没有本地化(我期望,基于浏览器设置)。所以这似乎是破坏实施。 – 2014-10-01 12:47:51

+0

@Frantisek Kossuth:对我来说是一个转换器错误......因为进入notes文档后端(NotesDatTime字段)的值是用1月份写的月份 – 2014-10-01 12:51:26

+0

我不这么认为 - 当我从阅读返回编辑模式时,月份是正确的。 – 2014-10-01 13:06:03

回答

1

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

演示数据库中使用的datepicker是this one by eternicode。在配置时使用小写的m来指定日期格式。

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

+0

Tnx工作得很好 – 2014-10-02 14:53:01