Как перенаправить обратно на ту же страницу с помощью PrettyFaces?

Я хотел бы знать, как перенаправить на ту же страницу при вызове действия.

У меня есть эта командаButton:

<h:commandButton action="#{someBean.edit}" value="Edit" />

Это действие:

@Named
@RequestScoped
public class SomeBean {

    public String edit() {
        // some logic
        return "theSamePage?faces-redirect=true";
    }

}

Но он не перенаправляет на ту же страницу, а просто обновляет ее, поэтому, когда я пытаюсь обновить страницу, нажав клавишу F5, происходит дублирование отправки. В обычных обстоятельствах это можно решить с помощью post/redirect/get. Но лица не будут отправлять перенаправление, если метод действия возвращает тот же viewId, что и viewId страницы, с которой отправляется запрос.

Я использую красивые лица.


person VaclavDedik    schedule 09.06.2012    source источник
comment
Пожалуйста, обновите свой вопрос. Судя по моему удаленному ответу, вы используете PrettyFaces, но в вопросе отсутствует эта важная деталь.   -  person BalusC    schedule 10.06.2012
comment
Я не думаю, что это актуально, но я все равно обновил его.   -  person VaclavDedik    schedule 10.06.2012
comment
Это определенно актуально. Стандартное решение JSF вам не подошло.   -  person BalusC    schedule 10.06.2012
comment
Думаю ты прав. Я попытался отключить красивые лица, и это сработало. Я предполагаю, что это ошибка симпатичных лиц.   -  person VaclavDedik    schedule 10.06.2012
comment
Если это ошибка в PrettyFaces, сообщите об этом в нашу систему отслеживания ошибок. Спасибо! github.com/ocpsoft/prettyfaces/issues   -  person Lincoln    schedule 14.06.2012


Ответы (2)


return "pretty:"; 

Это почти то, что вам нужно.

person pseudo    schedule 09.06.2012
comment
Спасибо, бро! Вы спасли мой день большое время. - person VaclavDedik; 10.06.2012

Я немного поискал и переписал свой ответ:

Идентификатор представления в красивых лицах вы можете получить, выполнив следующие действия:

      PrettyContext prettyContext = PrettyContext.newInstance((HttpServletRequest) request); 
      String viewId = prettyContext.getCurrentCalculatedViewId();

Для получения дополнительной информации проверьте это: https://groups.google.com/group/prettyfaces-users/browse_thread/thread/f50482709d7ec69b?pli=1

person Paulius Matulionis    schedule 09.06.2012
comment
Это не совсем то, о чем спрашивает ОП. OP нуждается в перенаправлении на одно и то же представление, а не на произвольное представление. - person BalusC; 10.06.2012
comment
Я пробовал, но это не работает, проблема с двойной почтой все еще возникает. - person VaclavDedik; 10.06.2012