Napisałem taki konwerter:
@FacesConverter("converter.RequestUserConverter")
public class RequestUserConverter implements Converter{
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if(value != null && value.trim().length() > 0) {
try{
RequestUser u = null;
try {
u = DAO.UserRequestDAO.getUserBySapCode(value);}
catch (IOException ex) {
Logger.getLogger(RequestUserConverter.class.getName()).log(Level.SEVERE, null, ex);
}
return u;
}
catch(NumberFormatException e) {
throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Not a valid theme."));}
}
else {
return null;}
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object object) {
if(object != null) {
return String.valueOf(object);
}
else {
return null;
}
}
}
Używam go w selectOneMenu który umieszczony jest z kolei w komponencie: tabView:
<p:selectOneMenu value="#{addRequestBean.manager}" converter="converter.RequestUserConverter" >
<f:selectItems value="#{userBean.userList}" var="var" itemLabel="#{var.surname} #{var.name}" itemValue="#{var.sapCode}" />
</p:selectOneMenu>
<p:commandButton id="confirmationDialogButton" value="Wyślij" actionListener="#{addRequestBean.oknoPotwierdzenia()}" />
Po uruchomieniu przycisku: confirmationDialogButton, wszystko działa prawidłowo, wyszukuje i zwraca obiekty typu : RequestUser. Problem pojawia się tylko gdy użyje przycisk do wylogowania użytkkownika który to umieszczony jest w tym samym formie jednak już po za componentem p:tabView:
<p:commandButton id="logOutButton" value="Wyloguj" action="/index.xhtml"/>
Zwraca mi błąd validacji wcześniej wspomnianego selectOneMenu. rozumiem wiem dlaczego.