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?