A String is immutable. It doesn't have a setter for the value. You need to wrap this around in a bean (or POJO as you call it).
public class Musician {
private String preferredGenre;
// Add/generate constructor, getter, setter, etc.
}
Then change your managed bean as follows.
@ManagedBean
@ViewScoped
public class NewMusician {
private ArrayList musicians = new ArrayList();
public NewMusician() {
musicians.add(new Musician("olo"));
}
public ArrayList getMusicians() {
return musicians;
}
public void saveNewMusician() {
// ...
}
// ...
}
And your datatable: