Seguinte pessoal, na minha view tenho 4 combos que preciso atualiza-las, conforme sua seleção (exemplo, seleciono o distrito, carrega-se a lista de setores, seleciono os setores e carrega-se a lista de quadras), ate a seleção de distritos está ok, porem quando vou selecionar um setor para carregar a lista de quadras, aparece a seguinte mensagem: setor:Erro de validação: o valor não é válido. Ja implementei o equals e hashcode no meu pojo, implementei a java.io.Serializable e estou ficando sem opções aqui…será que alguem poderia me ajudar???
grato!!
segue os codigos:
pojo:
public class ShpLote implements Serializable{
public ShpLote(){
super();
}
private Long id;
private String inscricao_cadastral;
private String distrito;
private String setor;
private String quadra;
private String lote;
//getters e setters
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final ShpLote other = (ShpLote) obj;
if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public int hashCode() {
int hash = 3;
hash = 61 * hash + (this.id != null ? this.id.hashCode() : 0);
return hash;
}
//detalhe nessa parte, ja inclusive implementei o eqs e hcode para cada atributo e mesmo asism nada
}
Managed Bean
@ManagedBean(name="bean")
@RequestScoped
public class Geral {
public Geral() {
this.distritos.add(new SelectItem("01", "01"));
}
private List<SelectItem> distritos = new ArrayList<SelectItem>();
private List<SelectItem> setores = new ArrayList<SelectItem>();
private List<SelectItem> quadras = new ArrayList<SelectItem>();
private List<SelectItem> lotes = new ArrayList<SelectItem>();
private ShpLote lote = new ShpLote();
public void atualizaSetor(){
this.setores.add(new SelectItem("01", "01"));
this.lote.setInscricao_cadastral(this.lote.getDistrito());
}
public void atualizaQuadra(){
FacesContext context = FacesContext.getCurrentInstance();
if (this.lote.getDistrito().equals("")){
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Selecione um distrito primeiro!", ""));
} else {
this.quadras.add(new SelectItem("01", "01"));
this.lote.setInscricao_cadastral(this.lote.getInscricao_cadastral() + this.lote.getSetor());
}
}
public void atualizaLote(){
FacesContext context = FacesContext.getCurrentInstance();
if (this.lote.getSetor().equals("")){
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Selecione um setor primeiro!", ""));
} else {
this.lotes.add(new SelectItem("01", "01"));
this.lote.setInscricao_cadastral(this.lote.getInscricao_cadastral() + this.lote.getQuadra());
}
}
public void atualizaInsc(){
FacesContext context = FacesContext.getCurrentInstance();
if (this.lote.getSetor().equals("")){
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Selecione um lote primeiro!", ""));
} else {
this.lote.setInscricao_cadastral(this.lote.getInscricao_cadastral() + this.lote.getLote());
}
}
//getters e setters
//detalhe nessa classe que tambem ja tentei implementar o eqs e hcode para o objeto ShpLote
}
xhtml
<h:panelGrid columns="2">
<h:outputLabel for="distrito" value="Distrito:"/>
<h:selectOneMenu id="distrito" required="true" requiredMessage="Selecione o distrito"
value="#{bean.lote.distrito}" style="width: 120px;">
<f:selectItem itemValue="" itemLabel="Selecione o distrito..." />
<f:selectItems var="lista" value="#{bean.distritos}"/>
<p:ajax event="change" listener="#{bean.atualizaSetor}" update="insc, setor, msg" />
</h:selectOneMenu>
<h:outputLabel for="setor" value="Setor:"/>
<h:selectOneMenu id="setor" required="true" requiredMessage="Selecione o setor"
value="#{bean.lote.setor}" style="width: 120px;">
<f:selectItem itemValue="" itemLabel="Selecione o setor..." />
<f:selectItems var="lista" value="#{bean.setores}"/>
<p:ajax event="change" listener="#{bean.atualizaQuadra}" update="insc, quadra, msg" />
</h:selectOneMenu>
<h:outputLabel for="quadra" value="Quadra:"/>
<h:selectOneMenu id="quadra" required="true" requiredMessage="Selecione a quadra"
value="#{bean.lote.quadra}" style="width: 120px;">
<f:selectItem itemValue="" itemLabel="Selecione a quadra..." />
<f:selectItems var="lista" value="#{bean.quadras}"/>
<p:ajax event="change" listener="#{bean.atualizaLote}" update="insc, lote, msg" />
</h:selectOneMenu>
<h:outputLabel for="lote" value="Lote:"/>
<h:selectOneMenu id="lote" required="true" requiredMessage="Selecione o lote"
value="#{bean.lote.lote}" style="width: 120px;">
<f:selectItem itemValue="" itemLabel="Selecione o lote..." />
<f:selectItems var="lista" value="#{bean.lotes}"/>
<p:ajax event="change" listener="#{bean.atualizaInsc}" update="insc, msg" />
</h:selectOneMenu>
<h:outputLabel for="insc" value="Inscrição cadastral:"/>
<h:outputText id="insc" value="#{bean.lote.inscricao_cadastral}"/>
</h:panelGrid>
Estou usando o Mojarra 2.0.4 com primefaces 2.2
Qualquer ajuda é bem-vinda!
thanx