If you want to declare a setter, you must set the property equal to the incoming `value`. public String userInput { get { return userInput; } set { userInput = value; } } You can also use the simplified form here since you are not doing anything more fancy: public String userInput { get; set; } --- [@sfdcfox](http://salesforce.stackexchange.com/users/2984/sfdcfox) has astutely pointed you towards [Building a Custom Controller](https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_controller_custom.htm) from the `Visualforce Developer Guide`, but I think his own explanation is actually a better read for you here: http://salesforce.stackexchange.com/questions/71700/apex-controllers-what-do-the-get-set-do