JSF is an abstract system which allows (or actually more like
requires) you to separate the View generation (rendering) from the other functions. In the vast majority of cases, the renderer that is employed is the HTML renderer.
HTML is a text-only markup language. Everything in an HTML request input stream is text, and everything in an HTML response stream is also text. However, the actual application may be dealing with binary objects such as integer and Date items.
Some object types are automatically converted by the JSF framework itself. However, JSF doesn't know how to properly convert user-defined types (classes), so for those items, you need to supply a converter of your own.
The converter is just a simple class with 2 methods. One converts the binary object to text, the other method does the exact opposite.