Здраствуйте,
Пробовал создать динамическую компоненту:
Если написать в контролере:
public Component.Apex.PageBlock pgBlock {get; private set;}
public transient Component.Apex.PageBlock pgBlock {get; private set;}то после ререндера страници компонента исчезает.
Но если сделать метод
public Component.Apex.PageBlock getPgBlock ()и в нем создавать постоянно компоненту, то так работает, но ето не совсем эффективно(когда например 10-20 таких компонент), если я не ошибаюсь.
Здраствуйте, Пробовал создать динамическую компоненту: Если написать в контролере: [code] public Component.Apex.PageBlock pgBlock {get; private set;} [/code] то получаю ошибку System.SerializationException: Not Serializable: Component.apex.pageblock а если написать [code] public transient Component.Apex.PageBlock pgBlock {get; private set;}[/code] то после ререндера страници компонента исчезает. Но если сделать метод [code]public Component.Apex.PageBlock getPgBlock () [/code]и в нем создавать постоянно компоненту, то так работает, но ето не совсем эффективно(когда например 10-20 таких компонент), если я не ошибаюсь. Как можно решить ету проблему? И можно как-то создать список компонент, а потом repeat'ом виводить?
Частично прокомментирую твой вопрос по поводу transient.
Данный модификатор говорит о том что данная переменная не передается во view state, а значит что ее значение будет теряться при обращениях к методам контроллера.
Поэтому не удивительно что "после ререндера страници компонента исчезает". Transient переменную придется инициализировать каждый раз при обращении к контроллеру.
Частично прокомментирую твой вопрос по поводу transient. Данный модификатор говорит о том что данная переменная не передается во view state, а значит что ее значение будет теряться при обращениях к методам контроллера. Поэтому не удивительно что "после ререндера страници компонента исчезает". Transient переменную придется инициализировать каждый раз при обращении к контроллеру.
Наверное глупейший вопрос, а можно в Апексе как-то динамически вызвать метод <!-- s:?: --><img src="{SMILIES_PATH}/icon_question.gif" alt=":?:" title="Вопрос" /><!-- s:?: -->
И вот еще такая проблема, можно ли как-то создать список компонент, и выводить их repeat'ом? (пока что идея создать компоненту и прикрепить все нужные компоненты к ней )
Просто у меня есть примерно 30 динамических компонент, но на странице нужно отображать только несколько, в зависимости от условии. Но при каждом обращении к контролеру вызывать сети для каждой компоненты будет не очень эффективно, но писать 30 if'оф на подобии if (isVisibleComponent) setComponent(); будет не очень красиво.
UPD: По поводу динамического вызова метода, нашел вот сайт https://www.salesforce.com/us/developer/docs/apexcode/Content/apex_pages_action.htm.
Как я понял есть такая штука ApexPages.Action, в которой есть два метода:
Но при такой реализации:
private PageReference method() {...}public void init() {
ApexPages.Action inv = new ApexPages.Action('{!method}');
inv.Invoke();
}
Наверное глупейший вопрос, а можно в Апексе как-то динамически вызвать метод <!-- s:?: --><img src="{SMILIES_PATH}/icon_question.gif" alt=":?:" title="Вопрос" /><!-- s:?: --> И вот еще такая проблема, можно ли как-то создать список компонент, и выводить их repeat'ом? (пока что идея создать компоненту и прикрепить все нужные компоненты к ней ) Просто у меня есть примерно 30 динамических компонент, но на странице нужно отображать только несколько, в зависимости от условии. Но при каждом обращении к контролеру вызывать сети для каждой компоненты будет не очень эффективно, но писать 30 if'оф на подобии if (isVisibleComponent) setComponent(); будет не очень красиво. UPD: По поводу динамического вызова метода, нашел вот сайт [url]https://www.salesforce.com/us/developer/docs/apexcode/Content/apex_pages_action.htm[/url]. Как я понял есть такая штука ApexPages.Action, в которой есть два метода: [list] [*] getExpression() - Returns the expression that is evaluated when the action is invoked.[/*:m] [*] invoke() - Invokes the action.[/*:m][/list:u] Но при такой реализации: [code] private PageReference method() {...} public void init() { ApexPages.Action inv = new ApexPages.Action('{!method}'); inv.Invoke(); } [/code] Получаю ошибку: System.UnexpectedException: Salesforce System Error: 173249565-39619 (1027755256) (1027755256)