This question is closely related to this one (which has been answered).
Throughout my project, I navigate between screens using JSF command buttons, where the action attribute would point to a function that returns a string. The string is the new screen's name e.g.
<h:commandButton value="Select" action="#{searchResultsBundledBean.selectFlight}">
</h:commandButton>
selectFlight
would return a string, e.g. selected-flight-review
which would direct the user to selected-flight-review.xhtml
For mobile purposes I had to make a panelGrid
clickable using an ajax call, e.g.
<h:panelGrid>
<f:ajax event="click" listener="#{searchResultsBundledBean.clickFlight(lowFareBundledSearchItem)}"/>
</h:panelGrid
This works, I've tested it, and the correct result is returned(Tested with logging it right before it's returned)
However, no redirection takes place. The ajax call doesn't do it yet. How do I make it redirect to another screen? I don't have to send through any variables, I just need the new screen to be displayed. Should I use something other than ajax(I would prefer not to), or is there some way to make this work the way it is now?
Add a middleware to process response, if it is a redirect for an ajax request, change the response to a normal response with the redirect url. Then in ajaxComplete, if the response contains redirect, it must be a redirect, so change the browser's location.
ajax({ type: 'POST', url: 'b. php', data: 'result='+$name, success: function() { window. location. href = "profile.
If you want to do a full redirect, you can use window. location = 'addcust. php? new_sale='+youridvariable In the success callback.
<p:inputText id="counter" value="#{listenerBean.text}" placeholder="Enter Text"> <p:ajax event="keyup" update="out" listener="#{listenerBean.ajaxEvent()}" /> </p:inputText> </h:panelGrid> <h:panelGrid id="out">
You can redirect the response from the backing bean:
public void clickFlight(Item lowFareBundledSearchItem) throws IOException {
// ...
FacesContext.getCurrentInstance().getExternalContext().redirect("selected-flight-review.xhtml");
FacesContext.getCurrentInstance().responseComplete();
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With