Несогласованное отображение значения даты и идентификатора на странице Visualforce

Я не могу понять, почему несоответствие данных, которые отображаются на странице VF. Я показываю идентификатор и дату в таблице блоков страниц. Я использую тег apex:column для отображения данных. Когда я объявляю данные в атрибуте значения без пробела, я получаю идентификатор длиной 15 символов, но когда я включаю пробел в атрибут значения, отображается идентификатор из 18 символов. Я не могу понять, почему так? введите здесь описание изображения

<apex:pageblock>
<apex:pageblockTable value="{!acc}" var="a">
     <apex:column value="{!a.Id}" headerValue="Id without space(15 char)"/>
     <apex:column value=" {!a.Id}" headerValue="Id with space(18 char)"/>
     <apex:column value="{!a.CreatedDate}" headerValue="Date defined in the Value attributes"/>
     <apex:column headerValue="Date not declared in the Value Attribute" >{!a.CreatedDate}</apex:column>
</apex:pageblockTable>
</apex:pageblock>

person Sam    schedule 26.06.2013    source источник


Ответы (1)


Когда вы вытягиваете только столбец без пробелов, Visualforce отображает поле, используя готовый интерфейс для этого типа. Согласно документации по API:

Поля идентификаторов в пользовательском интерфейсе Salesforce содержат 15-символьные строки с основанием 62 с учетом регистра.

Когда вы добавляете строку в поле идентификатора, вы преобразуете значение идентификатора в строку. Поскольку страницу интересует только значение, например запрос SOQL или строковый метод Apex, возвращается «сырое» значение.

18-значная, регистробезопасная версия идентификатора возвращается всеми вызовами API.

person Hraefn    schedule 28.06.2013