Sometimes our requirement is to invoke the button’s action in programmatic way without needing a user to click a button,. For example we want navigation happening automatically without clicking the button by user i.e implementing navigation in programmatic way using Java.We can queue an action event . In this case the developer may drag and drop a button in the page and binds its action property to some static action outcome or to a method that returns a String, and set Visible property for the button to false. At some point the developer can invoke this button’s action by using this code.
an another code snippet which will work in this scenario
FacesContext facesContext = FacesContext.getCurrentInstance();
UIViewRoot root = facesContext.getViewRoot();
//cb1 is the fully qualified name of the button
RichCommandButton button = (RichCommandButton) root.findComponent(“cb1″); // cb1 will be id of invisible button
ActionEvent actionEvent = new ActionEvent(button);
actionEvent.queue(); // we are queuing the all action programmaticly
an another code snippet which will work in this scenario
UIComponent component = null;
FacesContext facesContext = FacesContext.getCurrentInstance();
if (facesContext != null) {
UIComponent root = facesContext.getViewRoot();
component = findComponent(root, "button_id"); // button_id will be id of invisible button
}
RichCommandButton button = (RichCommandButton)component;
ActionEvent actionEvent = new ActionEvent(button);
actionEvent.queue(); // we are queuing the all action programmaticly
出处:http://www.techartifact.com/blogs/2012/09/queue-an-action-event-or-invoking-the-button-action-in-programmatic-way-techartifact.html