Sometimes we might need to programmatically execute the navigation and redirect to another page in Oracle ADF. This can be done in two ways
Approach #1
Get the navigation handler handle from the application context and pass the appropriate arguments to that. A sample code to achieve the same is as below.
import javax.faces.context.FacesContext;
import javax.faces.application.Application;
import javax.faces.application.NavigationHandler;
public void handleNavigation() {
FacesContext context = FacesContext.getCurrentInstance();
Application app = context.getApplication();
NavigationHandler handler = app.getNavigationHandler();
handler.handleNavigation(context, null, "navigation-action");
}
If you see the signature of the handleNavigation method, it is as below
public abstract void handleNavigation(FacesContext context, String fromAction, String outcome)
Approach #2
- Have a command button with action set on it.
- Make the visible property of the button false.
- Programmatically execute the action of the button to navigate to the required page. In this way we hide the button and achieve the navigation. The sample code for the same is as below
import javax.faces.context.FacesContext;
import javax.faces.component.UIViewRoot;
import javax.faces.event.ActionEvent;
import oracle.adf.view.rich.component.rich.nav.RichCommandButton;
public void handleNavigation() {
FacesContext facesContext = FacesContext.getCurrentInstance();
UIViewRoot root = facesContext.getViewRoot();
RichCommandButton button = (RichCommandButton) root.findComponent("button-id");
ActionEvent actionEvent = new ActionEvent(button);
actionEvent.queue();
}
No comments:
Post a Comment