I'm using <p:selectOneMenu> as follows:
<p:selectOneMenu id="choixProgramme" converter="#{programmeConverter}"
value="#{programmeController.selectedProgramme}">
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{programmeController.listProgrammes}"
    var="programme" itemLabel="#{programme.codeProgImmobilier}"
    itemValue="#{programme}" />
<p:ajax update="dataTableBien" />
I would like to show Select One message, but I get this error:
java.lang.String cannot be cast to xx.xxxxx.xxxx.xxxx.dto.ProgrammeDto
I tried this solution but I still have the same problem.
Edited
I added noSelectionOption to my <f:selectItem>:
     
But I have a conversation problem in getAsObject().
 java.lang.NumberFormatException: For input string: "Select One"
Edited
My converter:
@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
    if (arg2 == null || arg2.isEmpty()) {
        return null;
    }
    String programme = arg2;
    Long value = Long.valueOf(programme);
    ProgrammeDto result = new ProgrammeDto();
    result = programmeService.findById(value);
    return result;
}
@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
    if (arg2 == null) {
        return "";
    }
    if(arg2 instanceof ProgrammeDto) {
        if (((ProgrammeDto) arg2).getIdProgramme() == null) {
            return "";
        }
    }
            ProgrammeDto programme = new ProgrammeDto();
    if(arg2 instanceof ProgrammeDto) {
        programme = (ProgrammeDto) arg2;
        String codeProgramme = programme.getIdProgramme().toString();
        return (codeProgramme != null) ? String.valueOf(codeProgramme) : null;
    } else throw new ConverterException("Something wrong!" + arg2.hashCode() + arg2.toString());
}
How can I achieve this?