Регистрация  |  Вход

Get методы контроллера VS Propeties контроллера

Вернулся к написанию контроллеров и попробовал разобраться с простой, но не вполне ясной для меня темой того, какие как переменные из контроллера можно передать во Вью для вывод-ввода значений в них.

Вижу в примерах использование Get метода:

Account account;
public Account getAccount() {
if(account == null) account = new Account();
return account;
}
<apex:outputField value="{!account.name}"/>

другой вариант:

Public Object myObject { set; get; }

и в конструкторе контроллера инициализируем это поле.
выводится-вводится также
<apex:inputField value="{!myObject.name}"/>

так вот когда в первом примере я убираю из кода get метод и заменю его публичным set-get Property account (плюс инициализирую это поле в конструкторе) - измененный контроллер не сохраняется, пишет что во вью требуется этот Account getAccount() is referenced by Visualforce Page.
и я не знаю почему. Ну какая разница в данном случае для VFP что выводить в apex:outputField - переменную полученную из гет -метода или из гет-сет свойства? ведь публичное сет-гет поле тоже прекрасно выводится в VFP?
как говорится, "черт сидит в мелочах". И я не знаю где именно.

Вернулся к написанию контроллеров и попробовал разобраться с простой, но не вполне ясной для меня темой того, какие как переменные из контроллера можно передать во Вью для вывод-ввода значений в них.

Вижу в примерах использование Get метода:

[code]   Account account;
   public Account getAccount() {
      if(account == null) account = new Account();
      return account;
   } 
        <apex:outputField value="{!account.name}"/>[/code]

другой вариант:

[code]Public Object myObject { set; get; }

и в конструкторе контроллера инициализируем это поле. 
выводится-вводится также
     <apex:inputField value="{!myObject.name}"/>[/code]

так вот когда в первом примере я убираю из кода get метод и заменю его публичным set-get Property account  (плюс инициализирую это поле в конструкторе) - измененный контроллер не сохраняется, пишет что во вью требуется этот  Account getAccount() is referenced by Visualforce Page.
и я не знаю почему. Ну какая разница в данном случае для VFP что выводить в apex:outputField - переменную полученную из гет -метода или из гет-сет свойства? ведь публичное сет-гет поле тоже прекрасно выводится в  VFP? 
как говорится, "черт сидит в мелочах". И я не знаю где именно.

Den Brown
Вернулся к написанию контроллеров и попробовал разобраться с простой, но не вполне ясной для меня темой того, какие как переменные из контроллера можно передать во Вью для вывод-ввода значений в них.

Вижу в примерах использование Get метода:

Account account;
public Account getAccount() {
if(account == null) account = new Account();
return account;
}
<apex:outputField value="{!account.name}"/>

другой вариант:

Public Object myObject { set; get; }

и в конструкторе контроллера инициализируем это поле.
выводится-вводится также
<apex:inputField value="{!myObject.name}"/>

так вот когда в первом примере я убираю из кода get метод и заменю его публичным set-get Property account (плюс инициализирую это поле в конструкторе) - измененный контроллер не сохраняется, пишет что во вью требуется этот Account getAccount() is referenced by Visualforce Page.
и я не знаю почему. Ну какая разница в данном случае для VFP что выводить в apex:outputField - переменную полученную из гет -метода или из гет-сет свойства? ведь публичное сет-гет поле тоже прекрасно выводится в VFP?
как говорится, "черт сидит в мелочах". И я не знаю где именно.


Было бы значительно проще если бы показал код который не работает.

[quote="Den Brown"]Вернулся к написанию контроллеров и попробовал разобраться с простой, но не вполне ясной для меня темой того, какие как переменные из контроллера можно передать во Вью для вывод-ввода значений в них.

Вижу в примерах использование Get метода:

[code]   Account account;
   public Account getAccount() {
      if(account == null) account = new Account();
      return account;
   } 
        <apex:outputField value="{!account.name}"/>[/code]

другой вариант:

[code]Public Object myObject { set; get; }

и в конструкторе контроллера инициализируем это поле. 
выводится-вводится также
     <apex:inputField value="{!myObject.name}"/>[/code]

так вот когда в первом примере я убираю из кода get метод и заменю его публичным set-get Property account  (плюс инициализирую это поле в конструкторе) - измененный контроллер не сохраняется, пишет что во вью требуется этот  Account getAccount() is referenced by Visualforce Page.
и я не знаю почему. Ну какая разница в данном случае для VFP что выводить в apex:outputField - переменную полученную из гет -метода или из гет-сет свойства? ведь публичное сет-гет поле тоже прекрасно выводится в  VFP? 
как говорится, "черт сидит в мелочах". И я не знаю где именно.[/quote]
Было бы значительно проще если бы показал код который не работает.

По сути геттеры и сеттеры это тоже самое что и проперти, только являются просто "альтернативным" способом представления переменой. Из разряда хочешь пиши так, или пиши так.

То что у тебя что-то не заработало мне кажется это просто закралась ошибка в твоем исследовании. Поддержу Сергея и скажу что давай нерабочий пример.

По сути геттеры и сеттеры это тоже самое что и проперти, только являются просто "альтернативным" способом представления переменой. Из разряда хочешь пиши так, или пиши так.

То что у тебя что-то не заработало мне кажется это просто закралась ошибка в твоем исследовании. Поддержу Сергея и скажу что давай нерабочий пример.

Вот пример визарда из APEX Guide. Мы этот пример уже обсуждали.
https://www.salesforce.com/us/developer/docs/pages/Content/pages_quick_start_wizard.htm

вместо этого:

Account account;

public Account getAccount() {
if(account == null) account = new Account();
return account;
}

пишу:

Public Account account {set; get;}

public newOpportunityController() {
account = new Account();
}

результат - не сохраняется, просит getAccount()...

Вот пример визарда из APEX Guide. Мы этот пример уже обсуждали.
[url]https://www.salesforce.com/us/developer/docs/pages/Content/pages_quick_start_wizard.htm[/url]

вместо этого:

[code]   Account account;

   public Account getAccount() {
      if(account == null) account = new Account();
      return account;
   }[/code]

пишу:
[code]   Public Account account {set; get;}
   
   public newOpportunityController() {
             account = new Account();
     }[/code]

результат - не сохраняется, просит getAccount()...

Den Brown
Вот пример визарда из APEX Guide. Мы этот пример уже обсуждали.
https://www.salesforce.com/us/developer/docs/pages/Content/pages_quick_start_wizard.htm

вместо этого:

Account account;

public Account getAccount() {
if(account == null) account = new Account();
return account;
}

пишу:

Public Account account {set; get;}

public newOpportunityController() {
account = new Account();
}

результат - не сохраняется, просит getAccount()...

Коментируешь весь код в странице, сохраняешь страницу, сохраняешь контроллер, меняешь страницу, сохраняешь страницу.

[quote="Den Brown"]Вот пример визарда из APEX Guide. Мы этот пример уже обсуждали.
[url]https://www.salesforce.com/us/developer/docs/pages/Content/pages_quick_start_wizard.htm[/url]

вместо этого:

[code]   Account account;

   public Account getAccount() {
      if(account == null) account = new Account();
      return account;
   }[/code]

пишу:
[code]   Public Account account {set; get;}
   
   public newOpportunityController() {
             account = new Account();
     }[/code]

результат - не сохраняется, просит getAccount()...[/quote]

Коментируешь весь код в странице, сохраняешь страницу, сохраняешь контроллер, меняешь страницу, сохраняешь страницу.

wilder
Коментируешь весь код в странице, сохраняешь страницу, сохраняешь контроллер, меняешь страницу, сохраняешь страницу.

<!-- s:P --><img src="{SMILIES_PATH}/icon_razz.gif" alt=":P" title="Дразнится" /><!-- s:P -->
Да, работает.

Получается что на ВФП сохранилась какая-то память о зависимостях, которую нужно "обнулить".

Мне стало гораздо лучше.

Кстати я делаю небольшие ВФП и их контроллере во внутрибраузерном СФ редакторе ВФП. Поворачиваю монитор вертикально - удобно. Не могу себя приучить делать это в Эклипсе.

[quote="wilder"]
Коментируешь весь код в странице, сохраняешь страницу, сохраняешь контроллер, меняешь страницу, сохраняешь страницу.[/quote]

 <!-- s:P --><img src="{SMILIES_PATH}/icon_razz.gif" alt=":P" title="Дразнится" /><!-- s:P --> 
Да, работает.

Получается что на ВФП сохранилась какая-то память о зависимостях, которую нужно "обнулить".

Мне стало гораздо лучше.

Кстати я делаю небольшие ВФП и их контроллере во внутрибраузерном СФ редакторе ВФП. Поворачиваю монитор вертикально - удобно. Не могу себя приучить делать это в Эклипсе.

Den Brown
wilder
Коментируешь весь код в странице, сохраняешь страницу, сохраняешь контроллер, меняешь страницу, сохраняешь страницу.

<!-- s:P --><img src="{SMILIES_PATH}/icon_razz.gif" alt=":P" title="Дразнится" /><!-- s:P -->
Да, работает.

Получается что на ВФП сохранилась какая-то память о зависимостях, которую нужно "обнулить".

Мне стало гораздо лучше.

Кстати я делаю небольшие ВФП и их контроллере во внутрибраузерном СФ редакторе ВФП. Поворачиваю монитор вертикально - удобно. Не могу себя приучить делать это в Эклипсе.

на вкус и цвет...как говорится. Если будет совместная работа на этом орге получишь массу гемороя, так что выбор за тобой.

[quote="Den Brown"][quote="wilder"]
Коментируешь весь код в странице, сохраняешь страницу, сохраняешь контроллер, меняешь страницу, сохраняешь страницу.[/quote]

 <!-- s:P --><img src="{SMILIES_PATH}/icon_razz.gif" alt=":P" title="Дразнится" /><!-- s:P --> 
Да, работает.

Получается что на ВФП сохранилась какая-то память о зависимостях, которую нужно "обнулить".

Мне стало гораздо лучше.

Кстати я делаю небольшие ВФП и их контроллере во внутрибраузерном СФ редакторе ВФП. Поворачиваю монитор вертикально - удобно. Не могу себя приучить делать это в Эклипсе.[/quote]

на вкус и цвет...как говорится. Если будет совместная работа на этом орге получишь массу гемороя, так что выбор за тобой.