Товарищи.
Сорри за ламерский вопрос, но столько лет все реально не доходили руки с ним разобраться.
Сегодня очередной раз сталкиваюсь и просто сдали нервы - не могу найти в интернете объяснения этой проблемы.
И что-то мне подсказывает что я просто туплю!
Есть метод в контроллере, который надо вызвать и перегрузить страницу.
Но вся проблема что при перезагрузке страницы пропадают все переметры в url - остается голая /apex/pageName.
На работу страницы параметры уже конечно не влияют, но мне нужно чтобы они оставались на своем месте.
Можно конечно заюзать rerender! НО с тем же apex:inputFile он не работает
Вот пример простой
<apex:commandButton value="Upload" action="{!uploadDocument}" />
public void uploadDocument() {
insert document;
}
Другие варианты
public PageReference uploadDocument() {
insert document;
return null;
}
public PageReference uploadDocument() {
insert document;
return ApexPages.currentPage();
}
Ничего не работает.
Самое что непонятное - везде в проектах я видел третий вариант, но он реально не работает!
Видел костыли когда на выходе формируют новый PageReference и заново инициализируют все GET параметры. Но нафига? Если мне просто надо перегрузить текущую.
Товарищи. Сорри за ламерский вопрос, но столько лет все реально не доходили руки с ним разобраться. Сегодня очередной раз сталкиваюсь и просто сдали нервы - не могу найти в интернете объяснения этой проблемы. И что-то мне подсказывает что я просто туплю! Есть метод в контроллере, который надо вызвать и перегрузить страницу. Но вся проблема что при перезагрузке страницы пропадают все переметры в url - остается голая /apex/pageName. На работу страницы параметры уже конечно не влияют, но мне нужно чтобы они оставались на своем месте. Можно конечно заюзать rerender! НО с тем же apex:inputFile он не работает :( Вот пример простой <apex:commandButton value="Upload" action="{!uploadDocument}" /> public void uploadDocument() { insert document; } Другие варианты public PageReference uploadDocument() { insert document; return null; } public PageReference uploadDocument() { insert document; return ApexPages.currentPage(); } Ничего не работает. Самое что непонятное - везде в проектах я видел третий вариант, но он реально не работает! Видел костыли когда на выходе формируют новый PageReference и заново инициализируют все GET параметры. Но нафига? Если мне просто надо перегрузить текущую.
ApexPages.currentPage().getUrl() ?
ApexPages.currentPage().getUrl() ?
Вот это кстати вариант очень странный!
Кроме всего прочего мне в URL возвращается еще куча других параметров: данные о ViewState, данные из формы. Короче получается такой монструозный url.
Я понимаю что так и должно работать и при обращении к controller method идет POST запрос со всеми этими данными, и они должны там быть. НО почему нет простого варианта просто вернуться на страницу под тем же url?
Сидеть и вычищать ApexPages.currentPage().getUrl() от лишнего вообще не вариант.
Вот это кстати вариант очень странный! Кроме всего прочего мне в URL возвращается еще куча других параметров: данные о ViewState, данные из формы. Короче получается такой монструозный url. Я понимаю что так и должно работать и при обращении к controller method идет POST запрос со всеми этими данными, и они должны там быть. НО почему нет простого варианта просто вернуться на страницу под тем же url? Сидеть и вычищать ApexPages.currentPage().getUrl() от лишнего вообще не вариант.
делай рефрешь на JS.
[quote="Dmitry Shnyrev"]Вот это кстати вариант очень странный! Кроме всего прочего мне в URL возвращается еще куча других параметров: данные о ViewState, данные из формы. Короче получается такой монструозный url. Я понимаю что так и должно работать и при обращении к controller method идет POST запрос со всеми этими данными, и они должны там быть. НО почему нет простого варианта просто вернуться на страницу под тем же url? Сидеть и вычищать ApexPages.currentPage().getUrl() от лишнего вообще не вариант.[/quote] делай рефрешь на JS.
Мне не рефреш нужен. Мне нужно чтобы метод отработал и вернуться на ту же страницу с теми же параметрами.
Если бы я мог использовать rerender или js relaod вопроса не было бы.
[quote="Dmitry Shnyrev"]Можно конечно заюзать rerender! НО с тем же apex:inputFile он не работает [/quote] Мне не рефреш нужен. Мне нужно чтобы метод отработал и вернуться на ту же страницу с теми же параметрами. Если бы я мог использовать rerender или js relaod вопроса не было бы.
Попробуй:
public PageReference clientRedirect()
{
//your code here
PageReference landingPage = ApexPages.currentPage();
landingPage.setRedirect(false);
return landingPage;
}
Попробуй: [code] public PageReference clientRedirect() { //your code here PageReference landingPage = ApexPages.currentPage(); landingPage.setRedirect(false); return landingPage; } [/code]
Опять столкнулся
попробовал - не работает!
также обрезает все что после ?
Опять столкнулся :( попробовал - не работает! также обрезает все что после ?