The Faces Context is passed in so the converter can introspect various aspects of the request and response. The UI component is passed in so you can access the actual component that the conversion is done for.

In the getAsObject method the value passed in is a String since it is the value coming from the browser and the method will convert that to a domain specific object that you need.

In the getAsString method the value passed in is an Object since the domain specific object now need to be converted to something (a string) the browser understands.

Both methods throws a ConverterException when the conversion fails. So if you want the request life cycle to terminate early this method needs to throw the ConverterException.