JSF Showcase
h:commandButton
HtmlCommandButton is a UICommand component that renders a styleable HTML<input>
element. The default type is submit
. The component must be a child of h:form in order to trigger the action or actionListener.
Value Attribute Usage
Although the component's value attribute is read-only (can't be changed via form submission), it can be used to determine that an item has been selected by the user.Source Code
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> <h:form> <ui:repeat value="#{commandModelBean.customers}" var="customer"> <h:commandButton actionListener="#{commandBackingBean.selectionListener}" image="#{resource['images:button-edit.png']}" value="#{customer}"> <f:ajax render="@form" /> </h:commandButton> <h:outputText value=" #{customer.fullName}" /> <br /> </ui:repeat> <h:outputText id="modelValue" value="#{commandModelBean.selectedCustomer.fullName}" /> </h:form> </ui:composition>
@ManagedBean @ViewScoped public class CommandModelBean implements Serializable { // serialVersionUID private static final long serialVersionUID = 332271404377673109L; // Injections @ManagedProperty(value = "#{customerService}") private CustomerService customerService; // Private Data Members private boolean ajax; private Customer selectedCustomer; private List<Customer> customers; public List<Customer> getCustomers() { return customers; } public Customer getSelectedCustomer() { return selectedCustomer; } public boolean isAjax() { return ajax; } @PostConstruct public void postConstruct() { customers = customerService.getCustomers(0, 5); } public void setAjax(boolean ajax) { this.ajax = ajax; } public void setCustomerService(CustomerService customerService) { this.customerService = customerService; } public void setSelectedCustomer(Customer selectedCustomer) { this.selectedCustomer = selectedCustomer; } }
@ManagedBean @RequestScoped public class CommandBackingBean { private static final Logger logger = LoggerFactory.getLogger(CommandBackingBean.class); // Injections @ManagedProperty(value = "#{commandModelBean}") private CommandModelBean commandModelBean; public void actionListener(ActionEvent actionEvent) { FacesContext facesContext = FacesContext.getCurrentInstance(); PhaseId phaseId = facesContext.getCurrentPhaseId(); logger.debug("actionListener: phaseId=[{0}]", phaseId.toString()); String phaseName = phaseId.toString(); FacesMessage facesMessage = new FacesMessage("The actionListener method was called during the " + phaseName + " phase of the JSF lifecycle."); facesContext.addMessage(null, facesMessage); } public void ajaxListener(AjaxBehaviorEvent ajaxBehaviorEvent) { FacesContext facesContext = FacesContext.getCurrentInstance(); PhaseId phaseId = facesContext.getCurrentPhaseId(); logger.debug("ajaxListener: phaseId=[{0}]", phaseId.toString()); String phaseName = phaseId.toString(); FacesMessage facesMessage = new FacesMessage("The ajaxListener method was called during the " + phaseName + " phase of the JSF lifecycle."); facesContext.addMessage(null, facesMessage); } public void attributeActionListener(ActionEvent actionEvent) { FacesContext facesContext = FacesContext.getCurrentInstance(); PhaseId phaseId = facesContext.getCurrentPhaseId(); logger.debug("actionListener: phaseId=[{0}]", phaseId.toString()); String value = (String) actionEvent.getComponent().getAttributes().get("attribute"); String phaseName = phaseId.toString(); FacesMessage facesMessage = new FacesMessage("The actionListener method was called during the " + phaseName + " phase of the JSF lifecycle.The attribute value is " + value); facesContext.addMessage(null, facesMessage); } public void attributesActionListener(ActionEvent actionEvent) { FacesContext facesContext = FacesContext.getCurrentInstance(); PhaseId phaseId = facesContext.getCurrentPhaseId(); logger.debug("actionListener: phaseId=[{0}]", phaseId.toString()); Map<String, Object> attributes = actionEvent.getComponent().getAttributes(); String value1 = (String) attributes.get("attribute1"); String value2 = (String) attributes.get("attribute2"); String phaseName = phaseId.toString(); FacesMessage facesMessage = new FacesMessage("The actionListener method was called during the " + phaseName + " phase of the JSF lifecycle.The attributes value are " + value1 + " and " + value2); facesContext.addMessage(null, facesMessage); } public void feedbackListener(ActionEvent actionEvent) { String value = ""; List<UIComponent> children = actionEvent.getComponent().getChildren(); for (UIComponent uiComponent : children) { if (uiComponent instanceof UIOutput) { value = (String) ((UIOutput) uiComponent).getValue(); } } FacesContext facesContext = FacesContext.getCurrentInstance(); logger.debug("feedbackListener: You selected the '" + value + "' menu item."); FacesMessage facesMessage = new FacesMessage("You selected the '" + value + "' menu item."); facesContext.addMessage(null, facesMessage); } public Map<String, Object> getAttributes() { Map<String, Object> attributes = new HashMap<String, Object>(); attributes.put("attribute1", "value1"); attributes.put("attribute2", "value2"); return attributes; } public void parameterActionListener() { FacesContext facesContext = FacesContext.getCurrentInstance(); PhaseId phaseId = facesContext.getCurrentPhaseId(); logger.debug("actionListener: phaseId=[{0}]", phaseId.toString()); Map<String, String> requestParameterMap = facesContext.getExternalContext().getRequestParameterMap(); String value = requestParameterMap.get("parameter"); String phaseName = phaseId.toString(); FacesMessage facesMessage = new FacesMessage("The actionListener method was called during the " + phaseName + " phase of the JSF lifecycle.The parameter value is " + value); facesContext.addMessage(null, facesMessage); } public void selectionListener(ActionEvent actionEvent) { UICommand uiCommand = (UICommand) actionEvent.getComponent(); Customer customer = (Customer) uiCommand.getValue(); commandModelBean.setSelectedCustomer(customer); } public void setCommandModelBean(CommandModelBean commandModelBean) { this.commandModelBean = commandModelBean; } }
public class Customer implements Serializable { // serialVersionUID private static final long serialVersionUID = 6155011527137371447L; // Private Data Members private long customerId; private Country country; private Date dateOfBirth; private String firstName; private String lastName; public Customer(long customerId, Country country, String firstName, String lastName, Date dateOfBirth) { this.customerId = customerId; this.country = country; this.dateOfBirth = dateOfBirth; this.firstName = firstName; this.lastName = lastName; } public Country getCountry() { return country; } public long getCustomerId() { return customerId; } public Date getDateOfBirth() { return dateOfBirth; } public String getFirstName() { return firstName; } public String getFullName() { return firstName + " " + lastName; } public String getLastName() { return lastName; } public void setCountry(Country country) { this.country = country; } public void setCustomerId(long customerId) { this.customerId = customerId; } public void setDateOfBirth(Date dateOfBirth) { this.dateOfBirth = dateOfBirth; } public void setFirstName(String firstName) { this.firstName = firstName; } public void setLastName(String lastName) { this.lastName = lastName; } }
Liferay Faces Bridge Implementation 5.0.0 + Showcase Common 3.1.1 + Liferay Faces Util 3.4.1 + Mojarra 2.2.20