package org.richfaces.sandbox.watermark; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import javax.faces.convert.ConverterException; import java.io.Serializable; public class WatermarkBean implements Serializable { // ------------------------------ FIELDS ------------------------------ private Converter converter = new MyConverter(); private Object date; private String text = "Watermark text"; private TextObject textObject = new TextObject(); private Object watermarkedInput; // --------------------- GETTER / SETTER METHODS --------------------- public Converter getConverter() { return converter; } public Object getDate() { return date; } public void setDate(Object date) { this.date = date; } public String getText() { return text; } public void setText(String text) { this.text = text; } public TextObject getTextObject() { return textObject; } public Object getWatermarkedInput() { return watermarkedInput; } public void setWatermarkedInput(Object watermarkedInput) { this.watermarkedInput = watermarkedInput; } // -------------------------- OTHER METHODS -------------------------- public Object submit() { final FacesContext context = FacesContext.getCurrentInstance(); context.addMessage(null, new FacesMessage("Text:" + getWatermarkedInput())); context.addMessage(null, new FacesMessage("Date:" + getDate())); return null; } // -------------------------- INNER CLASSES -------------------------- private class MyConverter implements Converter { // ------------------------ INTERFACE METHODS ------------------------ // --------------------- Interface Converter --------------------- public Object getAsObject(FacesContext context, UIComponent component, String value) { return new TextObject(); } public String getAsString(FacesContext context, UIComponent component, Object value) { if (!(value instanceof TextObject)) { throw new ConverterException(String.format("%s is not instance of %s", value.getClass().getCanonicalName(), TextObject.class.getCanonicalName())); } return ((TextObject) value).getText(); } } private class TextObject { // --------------------- GETTER / SETTER METHODS --------------------- String getText() { return text; } } }