Bom dia pessoal,
Estou com um problema para utilizar um HtmlCommandButton dinâmico. Eu crio o seguinte botão toda vez que um usuário recebe uma mensagem, como se fosse um chat onde o usuário clica no botao lida e ele deleta akela mensagem da tela.
HtmlCommandButton cmd = new HtmlCommandButton();
String sId = "message" + id;
cmd.setId(sId);
cmd.setValue("Lida");
ExpressionFactory ef = FacesContext.getCurrentInstance().getApplication().getExpressionFactory();
MethodExpression me = ef.createMethodExpression(FacesContext.getCurrentInstance().getELContext(),
"#{usuarioLogadoListBean.messageReaded}", String.class,
new Class<?>[] {});
cmd.setActionExpression(me);
String action = "#{usuarioLogadoListBean.messageReaded}";
Class<Object> pars[] = new Class[] {ActionEvent.class};
MethodExpression methodExpression = FacesContext.getCurrentInstance().getApplication().getExpressionFactory()
.createMethodExpression(FacesContext.getCurrentInstance().getELContext(), action , String.class, pars);
cmd.setActionExpression(methodExpression);
if (usuarioLogado.getMessages().size() > 1) {
cmd.setOnclick("$(\"#"+sId+"\").remove();"); //estou usando jquery aki e esta lógica ainda sera melhorada, é apenas teste
} else {
cmd.setOnclick("$(\"#chatBoxID\").remove();");//estou usando jquery aki
}
cmd.addActionListener(FacesContext.getCurrentInstance().getApplication().getActionListener());
cmd.encodeAll(FacesContext.getCurrentInstance());
cmd.setRendered(true);
cmd.setImmediate(true);
Eu consigo remover a parte da tela, porem nao consigo invocar o metodo “#{usuarioLogadoListBean.messageReaded}” para ele marcar a mensagem como “Lida” e ela nao aparecer novamente qdo o usuario receber outra mensagem. Estou acostumado com Swing e la tem um ActionListener q deve ser implementado para q o botao execute um metodo, mas em web to acostumado com um botao (tipo submit) ter uma action q execute o metodo, porem qdo “debugo” utilizando o firebug o q me aparece no codigo do meu HtmlCommandButton é:
<input id="message0" type="submit" name="message0" value="Lida" onclick="$("#chatBoxID").remove();" class="formInput" />
ou seja, sem um action sendo q na criacao dele eu faço um setAction…
o q devo fazer nesse caso?
valeu!