Могу ли я получить формат локали для apex: outputText? - PullRequest
2 голосов
/ 13 марта 2012

Я знаю, что вы можете отформатировать дату следующим образом:

<apex:outputText value="{0,date,MM'/'dd'/'yyyy}">
    <apex:param value="{!contact.Birthdate}" /> 
</apex:outputText>

Однако моя заявка будет распространена в нескольких странах. В некоторых (например, у меня) формат даты dd/MM/yyyy, но в других (например, в США) формат MM/dd/yyyy.

Можно ли как-то сказать Visualforce использовать формат короткой даты локали?

Ответы [ 3 ]

2 голосов
/ 14 августа 2014

Единственное решение этой проблемы, которое действительно работает правильно, было первоначально размещено на http://mindfiresfdcprofessionals.wordpress.com/2013/10/25/how-to-dispaly-locale-formatted-datetime-in-visual-force/. Я публикую нижеприведенный код на случай, если ссылка внезапно исчезнет:

Вы должны создать новый компонент VF с именем LocaleDate:

<apex:component access="global" controller="LocaleDateController">
<apex:attribute assignTo="{!dateValue}" description="The Date value to be rendered based upon the user's
               locale" name="date_Value" type="Date"></apex:attribute>
       {!TimeZoneValue}
</apex:component>

Контроллер:

public with sharing class LocaleDateController {

    public Date dateValue{get;set;}

    public String getTimeZoneValue() {
        if( dateValue != null ) {
            String localeFormatT = dateValue.format();
            return localeFormatT;
        }
        return null;
    }
}

А затем используйте такой компонент:

<c:LocaleDate date_Value="{!TODAY()}"/>

Работает с любым введенным вами значением даты, необязательно с полем sObject. Вся идея основана на том факте, что функция Date.format() создает строку на основе локали текущего пользователя. Таким же образом можно создавать контроллеры-оболочки для типов данных DateTime и Decimal.

0 голосов
/ 14 марта 2012

Форматирование на основе Apex-параметров основано на MessageFormat Java :

<apex:outputText value="{0, date, short}">
    <apex:param value="{!contact.Birthdate}" /> 
</apex:outputText>
0 голосов
/ 14 марта 2012

Предполагая, что вы присваиваете переменную типа date в атрибуте value , она должна автоматически обрабатывать локаль для вас.Так что вам не нужно явно форматировать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...