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

Apex:commandButton redirect to the same Url

Товарищи.
Сорри за ламерский вопрос, но столько лет все реально не доходили руки с ним разобраться.
Сегодня очередной раз сталкиваюсь и просто сдали нервы - не могу найти в интернете объяснения этой проблемы.
И что-то мне подсказывает что я просто туплю!

Есть метод в контроллере, который надо вызвать и перегрузить страницу.
Но вся проблема что при перезагрузке страницы пропадают все переметры в 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() от лишнего вообще не вариант.

Dmitry Shnyrev
Вот это кстати вариант очень странный!
Кроме всего прочего мне в 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.

Dmitry Shnyrev
Можно конечно заюзать rerender! НО с тем же apex:inputFile он не работает

Мне не рефреш нужен. Мне нужно чтобы метод отработал и вернуться на ту же страницу с теми же параметрами.
Если бы я мог использовать 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]

Опять столкнулся
попробовал - не работает!
также обрезает все что после ?

Опять столкнулся :(
попробовал - не работает!
также обрезает все что после ?