Как получить в контроллере страниц Visualforce значение из пользовательского контроллера компонентов? - PullRequest
4 голосов
/ 24 мая 2011

Я пытаюсь разработать пользовательский компонент visualforce, который выбирает сущность. Этот пользовательский компонент отображает пользовательский интерфейс, который помогает просматривать некоторые записи. Можно выбрать одну запись, и я хотел бы получить ее извне компонента или его контроллера.

Я посмотрел на стандартную привязку salesforce с помощью assignTo, она не двунаправленная ...

Надеюсь, кто-нибудь может мне помочь .. Спасибо

Ответы [ 2 ]

4 голосов
/ 24 мая 2011

Вы передаете объект в компонент?Объекты передаются по ссылке, поэтому, если ваш компонент имеет атрибут, который принимает объект и что-то с ним делает, ваш контроллер внешней страницы сможет получить доступ к измененным значениям.

Если вы передадите оболочкуобъект, т.е.если ваш пользовательский интерфейс позволяет пользователю выбрать учетную запись.

Class SelectedAccount
{
  public Account theAccount {get;set;}
}

Компонент:

<apex:component controller="ComponentController">
   <apex:attribute type="SelectedAccount" name="userSelectedAccount" description="Selected Account" assignTo="{!selectedAccount}"
</apex:component>

Контроллер компонентов:

public class ComponentController
{
  public selectedAccount;

  public void ComponentController(){}

  public PageReference selectAccountFromUI(Account selected)
  {
    selectedAccount.theAccount = selected;

    return null;
  }
}

Страница Использование компонента:

<c:MyAccountComponent userSelectedAccount="{!instanceOfSelectedAccount}"/>

Это позволит вам назначить выбранную пользователем учетную запись экземпляру объекта оболочки, который принадлежит внешнему контроллеру.Затем вы можете ссылаться:

instanceOfSelectedAccount.theAccount

с вашего основного контроллера Visualforce Pages.

1 голос
/ 23 октября 2012

1 - объявить статическую переменную во внешнем классе (может быть контроллером страницы VF)Что-то вроде :public static apexType myRecordOutside;2 - Когда вы делаете свой выбор из записей в методе в контроллере пользовательских компонентовСделайте что-то вроде этого:OutsideClass.myRecordOutside = chosenRecord; //notice that when its static you can access it without instantiating the outside class.3-, тогда объявите в вашей визуальной силе<c:myCustomComponent userSelectedAccount = {!myRecordOutside}></c:myCustomComponent>
это получит myRecordOutside не из класса контроллера компонента, а из внешнего класса

Если у вас есть вопросы по части моего ответа, дайте мне знать:)

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