public String mostrarPanelDeData() {
if (quantidade > 0) {
setPnlData(adicionarComponentes());
this.atualizarPanel = true;
} else {
this.atualizarPanel = false;
}
return null;
}
public HtmlPanel adicionarComponentes() {
for (int contador = 1; contador <= this.extensao.getQuantidadeDeParcelas(); contador++) {
// Cria um outputlabel
HtmlOutputLabel lblData = new HtmlOutputLabel();
// Atribui id para o outputlabel
lblData.setId("lbl_data_" + contador);
// Atribui o form para o outputlabel
lblData.setFor("form_incluir");
// Atribui valor para o outputlabel
lblData.setValue(contador + "Data: ");
// Adiciona o label ao panel
this.pnlData.getChildren().add(lblData);
// Cria um calendar
HtmlCalendar cldData = new HtmlCalendar();
// Atribui id para o calendar
cldData.setId("cld_data_" + contador);
// Adiciona a propriedade required
cldData.getAttributes().put("required", Boolean.TRUE);
// Adiciona a propriedade requiredMessage
cldData.getAttributes().put("requiredMessage", "Favor informar a data.");
// Adiciona a propriedade datePattern
cldData.getAttributes().put("datePattern", "dd/MM/yyyy");
// Adiciona a propriedade locale
cldData.getAttributes().put("locale", "pt_BR");
// Adiciona o calendar ao panel
this.pnlDataVencimento.getChildren().add(cldDataDeVencimento);
}
return this.pnlData;
}
O problema agora é que quando seleciono alguma opção no combobox todos os outros campos do formulário ficam vazios
Troquei o rich:combobox por um a4j:commandButton mas mesmo assim, ao clicar no botão os outros campos são limpos.
Mas não chega a enviar o form pois tenho campos obrigatórios com exibição de mensagens que não são exibidas.
/**
* Método responsável por atribuir ao panel um panel com componente
* adicionado.
*/
public void adicionarData() {
setPnlDatas(adicionarComponentes());
this.mostrarBotaoRemover = true;
}
/**
* Método responsável por atribuir ao panel um panel sem o último componente.
*/
public void removerData() {
setPnlDatas(removerComponentes());
}
/**
* Método responsável por remover o último componente inserido no panel.
* @return pnlDatas Panel com o componente removido.
*/
public HtmlPanel removerComponentes() {
if (this.contador > 0) {
this.contador--;
this.pnlDatas.getChildren().remove(contador);
}
if (this.contador == 0) {
this.mostrarBotaoRemover = false;
}
return this.pnlDatas;
}
/**
* Método responsável por adicionar componentes ao panel de assim que é
* pressionado o botão Adicionar
* @return pnlDatas Panel com os componentes adicionados.
*/
public HtmlPanel adicionarComponentes() {
HtmlPanelGroup pgpComponentes = new HtmlPanelGroup();
// Cria um outputlabel
HtmlOutputLabel lblData = new HtmlOutputLabel();
// Atribui id para o outputlabel
lblData.setId("lbl_data_" + contador);
// Atribui o form para o outputlabel
lblData.setFor("form_incluir");
// Atribui valor para o outputlabel
lblData.setValue((contador + 1) + "ª Data: ");
// Adiciona o label ao panel
pgpComponentes.getChildren().add(lblData);
// Cria um label
HtmlOutputLabel lblBR = new HtmlOutputLabel();
// Adiciona um atributo de escape ao label
lblBR.getAttributes().put("escape", Boolean.FALSE);
// Atribui id para o label
lblBR.setId("lbl_br_" + contador);
// Atribui valor para o label
lblBR.setValue("<br />");
// Adiciona o label ao panel
pgpComponentes.getChildren().add(lblBR);
// Cria um calendar
HtmlCalendar cldData = new HtmlCalendar();
// Atribui id para o calendar
cldData.setId("cld_data_" + contador);
// Adiciona a propriedade required
cldData.getAttributes().put("required", Boolean.TRUE);
// Adiciona a propriedade requiredMessage
cldData.getAttributes().put("requiredMessage", "Favor informar a data.");
// Adiciona a propriedade datePattern
cldData.getAttributes().put("datePattern", "dd/MM/yyyy");
// Adiciona a propriedade locale
cldData.getAttributes().put("locale", "pt_BR");
// Adiciona o calendar ao panel
pgpComponentes.getChildren().add(cldDataDeVencimento);
// Adiciona o label ao panel
pgpComponentes.getChildren().add(lblBR);
// Cria um richmessage
HtmlRichMessage msgErro = new HtmlRichMessage();
// Referencia o inputtext para exibição da mensagem
msgErro.setFor("cld_data_" + contador);
// Adiciona a propriedade styleClass
msgErro.getAttributes().put("styleClass", "alerta");
// Adiciona o message ao panel
pgpComponentes.getChildren().add(msgErro);
// Adiciona o label ao panel
pgpComponentes.getChildren().add(lblBR);
// Adiciona o panel group ao panel
this.pnlDatas.getChildren().add(pgpComponentes);
// Incrementa o contador de panel group
this.contador++;
// Retorna o panel com o componente adicionado.
return this.pnlDatas;
}
Se alguém souber como resolver utilizando o rich:combobox… Compartilhe