after long searching for solution to my problem I've desided to ask hier.
I tried to implement the autocomplete with pojo and i can get the value under the Input field.
the growl message says:Validation Error: Value is required as I klick submit button.
So I don't know what I made false.
Please help.
my XHTML:
Code: Select all
<h:form id="createFilmForm">
<h:panelGrid id="createFilmGrid" columns="3" rowClasses="vertTopPanel">
<h:outputLabel id="directorTest" value="Director:" />
<p:autoComplete value="#{filmBean.selectedDirector}"
completeMethod="#{filmBean.completeDirector}"
var="director"
itemLabel="#{director.surname}, #{director.name}"
itemValue="#{director}"
converter="directorConverter"/>
<p:commandButton value="Submit" update="director messages" />
<p:growl id="messages" showDetail="true"/>
<h:outputText id="director" value="Selected: #{filmBean.selectedDirector.name}" />
</h:panelGrid>
</h:form>
Code: Select all
private Director director;
private List<Director> directors;
private Director selectedDirector=null;
public FilmadministrationMgdBean(){
newfilm = new Film();
}
public List<Director> completeDirector(String query) throws DirectorNotFoundException {
LOGGER.info("Try to complete director" + query);
List<Director> suggestions = new ArrayList<Director>();
suggestions = filmSpring.findDirectorBySurnamePrefix(query);
return suggestions;
}
public Director getSelectedDirector() {
return selectedDirector;
}
public void setSelectedDirector(Director selectedDirector) {
this.selectedDirector = selectedDirector;
}
Code: Select all
public DirectorConverter() {
}
@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String directorString) {
LOGGER.info( "Try to get as an object:"+directorString);
String[]directorArray = directorString.split(",");
LOGGER.info( "Try to get director by id:"+directorArray[0]);
Director director = new Director();
director.setId(new Long(directorArray[0]));
director.setSurname(directorArray[1]);
director.setName(directorArray[2]);
LOGGER.info( "result:"+director);
return director;
}
@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
LOGGER.info( "Try to get director as a String: " + arg2.toString());
return arg2.toString();
}
Alexej