package com.avbravo.avbravojsf;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import javax.faces.component.FacesComponent;
import javax.faces.component.UIComponentBase;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
/**
*
* @author avbravo
*/
@FacesComponent(createTag = true, tagName = "helloComponent", namespace = "http://avbravo.com/tags")
public class HelloComponent extends UIComponentBase {
@Override
public String getFamily() {
return "Greeting";
}
@Override
public void encodeBegin(FacesContext context) throws IOException {
String message = (String) getAttributes().get("message");
LocalDateTime time = (LocalDateTime) getAttributes().get("time");
String formattedTime = time.format(
DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM));
ResponseWriter writer = context.getResponseWriter();
writer.startElement("p", this);
writer.write("Message: " + message);
writer.endElement("p");
writer.startElement("p", this);
writer.write("Time: " + formattedTime);
writer.endElement("p");
}
}
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>avbravojsf</artifactId>
<version>0.1</version>
</dependency>
xmlns:avbravojsf="http://avbravo.com/tags"
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<ui:composition template="/layout/template.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:b="http://bootsfaces.net/ui"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:avbravojsf="http://avbravo.com/tags"
xmlns:a="http://xmlns.jcp.org/jsf/composite/avbravo"
xmlns:e="http://xmlns.jcp.org/jsf/composite/extensions"
xmlns:extensionviaje="http://xmlns.jcp.org/jsf/composite/extensionviaje">
<avbravojsf:helloComponent message="#{helloBean.message}" time="#{helloBean.time}"/>
import java.time.LocalDateTime;
import java.util.Date;
import javax.inject.Named;
import javax.enterprise.context.RequestScoped;
/**
*
* @author avbravo
*/
@Named(value = "helloBean")
@RequestScoped
public class HelloBean {
private String id;
private Date date;
/**
* Creates a new instance of HelloBean
*/
public HelloBean() {
}
public String getMessage() {
return "Hi there!";
}
public LocalDateTime getTime() {
return LocalDateTime.now();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}