2014-10-01 47 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