2016-05-20 3 views
1

Нам нужно изменить формат даты для компонента dateaava date (javaSript) по умолчанию. формат по умолчанию - MM/dd/yy, и нам нужно изменить его на MM/dd/yyyy.Как изменить формат даты для компонента даты Openxava?

С помощью следующей ссылки мы можем изменить формат представления списка с помощью интерфейса IFormatter. но в этом разговоре четко не упоминается, как изменить формат компонента выбора даты.

https://sourceforge.net/p/openxava/discussion/419690/thread/40db1436/

Пожалуйста, помогите мне решить эту проблему ...

ответ

1

Чтобы изменить способ даты, или любой другой тип, анализируется, и форматированный вы должны определить форматчик для этого типа. Для того, чтобы определить форматчик отредактировать файл EDITORS.XML и добавить такую ​​запись:

<editor name="DateCalendar" url="dateCalendarEditor.jsp"> 
    <formatter class="com.yourcompany.yourapp..formatters.YourDateFormatter" /> 
    <for-type type="java.util.Date" /> 
</editor> 

Вы должны написать YourDateFormatter, реализующий IFormatter. Например, формат даты по умолчанию:

package org.openxava.formatters; 

import java.text.*; 

import javax.servlet.http.*; 

import org.openxava.util.*; 

/** 
* Date formatter with multilocale support. <p> 
* 
* Although it does some refinement in Spanish case, it support formatting 
* on locale basis.<br> 
* 
* @author Javier Paniza 
*/ 

public class DateFormatter implements IFormatter { 

    private static DateFormat extendedDateFormat = new SimpleDateFormat("dd/MM/yyyy"); // Only for some locales like "es" and "pl" 

    private static DateFormat [] extendedDateFormats = { // Only for some locales like "es", "fr", "ca" and "pl" 
     new SimpleDateFormat("dd/MM/yy"), 
     new SimpleDateFormat("ddMMyy"), 
     new SimpleDateFormat("dd.MM.yy")     
    }; 

    public String format(HttpServletRequest request, Object date) { 
     if (date == null) return ""; 
     if (Dates.getYear((java.util.Date)date) < 2) return ""; 
     return getDateFormat().format(date); 
    } 

    public Object parse(HttpServletRequest request, String string) throws ParseException { 
     if (Is.emptyString(string)) return null;     
     if (isExtendedFormat()) { 
      if (string.indexOf('-') >= 0) { // SimpleDateFormat does not work well with - 
       string = Strings.change(string, "-", "/"); 
      }  
     } 
     DateFormat [] dateFormats = getDateFormats(); 
     for (int i=0; i<dateFormats.length; i++) { 
      try { 
       dateFormats[i].setLenient(false); 
       return dateFormats[i].parseObject(string); 
      } 
      catch (ParseException ex) { 
      }      
     } 
     throw new ParseException(XavaResources.getString("bad_date_format",string),-1); 
    } 

    private boolean isExtendedFormat() { 
     return "es".equals(Locales.getCurrent().getLanguage()) || 
      "ca".equals(Locales.getCurrent().getLanguage()) || 
      "pl".equals(Locales.getCurrent().getLanguage()) || 
      "fr".equals(Locales.getCurrent().getLanguage()); 
    } 

    private DateFormat getDateFormat() { 
     if (isExtendedFormat()) return extendedDateFormat; 
     return DateFormat.getDateInstance(DateFormat.SHORT, Locales.getCurrent());  
    } 

    private DateFormat[] getDateFormats() { 
     if (isExtendedFormat()) return extendedDateFormats; 
     return new DateFormat [] { getDateFormat() }; 
    } 

} 
+0

@javiepaniza Спасибо за ваш ответ. Я также хочу изменить формат даты компонента java-скрипта. с этим он не изменит формат компонента java script. – user3496599

+0

Привет, пользователь, о форматировании JavaScript, поставил вопрос на форум OpenXava, я отвечу вам там. – javierpaniza