Button/Link
Data
Input
Miscellaneous
Multimedia
Output
Panel
Select
JSTL
Faces Core
Facelets
Extensions

alloy:commandLink

CommandLink is a UICommand component that renders an <a> element. Since it extends HtmlCommandLink, it supports all the features of h:commandLink. The component must be a child of h:form in order to trigger the action or actionListener. In order to provide a Rich Internet Application (RIA) experience for the end-user, the following attributes are set by default:

Immediate Usage

When the immediate attribute is true, the action and actionListener callbacks execute during the APPLY_REQUEST_VALUES phase of the JSF lifecycle, rather than the normal INVOKE_APPLICATION phase.

Source Code

<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:alloy="http://liferay.com/faces/alloy"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<!-- Example 1: ActionListener execution when immediate is true -->
<alloy:form>
<alloy:messages globalOnly="true" styleClass="feedback" />
<alloy:commandLink actionListener="#{commandBackingBean.actionListener}" immediate="true" render="@form"
value="#{i18n['submit']}" />
</alloy:form>
<!-- Example 2: ActionListener execution when immediate is false (the default) -->
<alloy:form>
<alloy:messages globalOnly="true" styleClass="feedback" />
<alloy:commandLink actionListener="#{commandBackingBean.actionListener}" render="@form"
value="#{i18n['submit']}" />
</alloy:form>
</ui:composition>
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
@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;
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Liferay Faces Alloy 4.1.1 + Liferay Faces Bridge Implementation 5.0.0 + Showcase Common 4.0.0 + Liferay Faces Util 3.4.1 + Mojarra 2.2.20