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

alloy:inputDate

InputDate is a UIInput component that renders an <input type="text"> element and a calendar popover with selectable dates. The component attempts to automatically convert the submitted value to a Date via a built-in DateTimeConverter.

Validation Usage

A custom validator can be specified via the validator attribute.

Source Code

<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:alloy="http://liferay.com/faces/alloy"
xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<alloy:form>
<alloy:field label="#{i18n['request-a-day-off-weekdays-only']}">
<alloy:inputDate id="dayOff" pattern="MM/dd/yyyy"
validator="com.liferay.faces.showcase.validator.WeekdayValidator"
value="#{inputDateModelBean.birthday}" />
<alloy:message for="dayOff" />
</alloy:field>
<hr />
<alloy:commandButton render="@form" value="#{i18n['submit']}" />
<alloy:outputText id="modelValue" value="#{inputDateModelBean.birthday}">
<f:convertDateTime pattern="MM/dd/yyyy" />
</alloy:outputText>
</alloy:form>
</ui:composition>
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
@FacesValidator("com.liferay.faces.showcase.validator.WeekdayValidator")
public class WeekdayValidator implements Validator {
@Override
public void validate(FacesContext facesContext, UIComponent uiComponent, Object object) throws ValidatorException {
if (object != null) {
Date date;
InputDate inputDate = (InputDate) uiComponent;
String timeZoneString = inputDate.getTimeZone();
TimeZone timeZone = TimeZone.getTimeZone(timeZoneString);
if (object instanceof Date) {
date = (Date) object;
}
else {
String dateString = object.toString();
String datePattern = inputDate.getPattern();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(datePattern);
simpleDateFormat.setTimeZone(timeZone);
try {
date = simpleDateFormat.parse(dateString);
}
catch (ParseException e) {
String message = AlloyValidatorHelper.getMessage(facesContext, inputDate, "invalid-selection");
FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_ERROR, message, message);
throw new ValidatorException(facesMessage, e);
}
}
Calendar calendar = new GregorianCalendar(timeZone);
calendar.setTime(date);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
if ((dayOfWeek == Calendar.SATURDAY) || (dayOfWeek == Calendar.SUNDAY)) {
String message = AlloyValidatorHelper.getMessage(facesContext, inputDate, "sat-and-sun-are-not-valid");
FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_WARN, message, message);
throw new ValidatorException(facesMessage);
}
}
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
@ManagedBean
@RequestScoped
public class InputDateModelBean {
private Date birthday;
private Locale locale;
private Date maxDate;
private Date minDate;
public Date getBirthday() {
return birthday;
}
public String getFormattedMaxDate() {
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
return dateFormat.format(getMaxDate());
}
public String getFormattedMinDate() {
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
return dateFormat.format(getMinDate());
}
public Locale getLocale() {
if (locale == null) {
locale = new Locale("ja", "JA");
}
return locale;
}
public Date getMaxDate() {
if (maxDate == null) {
Calendar calendar = new GregorianCalendar();
calendar.add(Calendar.MONTH, 2);
maxDate = calendar.getTime();
}
return maxDate;
}
public Date getMinDate() {
if (minDate == null) {
Calendar calendar = new GregorianCalendar();
calendar.add(Calendar.MONTH, -2);
minDate = calendar.getTime();
}
return minDate;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
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