Java EE 7 JSF Facelet h:commandButton action redirect to page -
this question has answer here:
hi have java ee 7 application in netbeans 8.0.2 running on glassfish 4.01
i use @managedbean @sessionscoped controller usercontroller.java
i have index.xhtml facelet , signup.xhtml facelet
in index.xhtml facelet have
<h:commandbutton value="sign up" action="#{usercontroller.signup()}"></h:commandbutton> which calls function public string signup() { in usercontroller.java
in function return return pages.sign_up_page; renders face let signup.xhtml there have form fill in user data such user name email , password.
the first thing when return pages.sign_up_page; page signup.xhtml gets rendered in url still stands .../faces/index.xhtml
in signup.xhtml have the
<h:commandbutton value="create user" action="#{usercontroller.createnewuser()}"></h:commandbutton> then in public string createnewuser() function return return pages.user_action_overview; renders page overview.xhtml url .../faces/signup.xhtml
which leads bigger problem when refresh page ( overview page shows me data of new signedup user ) send post request again signup() same user same post parameters.
what need if render page, right url displayed ( on of page rendered ) , if refresh page not again old post request gets send.
the jsf perforns post based request, why url not change. solution add faces-redirect parameter query sttring this
public string signup () { //some processing here return pages.signup_page + "?faces-redirect=true"; } this force redirect sign page after post request completed. result, browser's address bar show address of current page, i. e. sign page
Comments
Post a Comment