HtmlSuggestionBox doubt
leiras Sep 19, 2008 2:50 PMHi all,
i'm trying to use the HtmlSuggestionBox programatically, but it is not working wright. The list appears correctly, the filtering is wright too, but when i select some item on the list, the selected item don't appears on the HtmlInputText.
Please take a look at my code:
<h:form id="formX">
<rich:panel id="panelX" binding="#{telaLogin.panelX}"/>
</h:form>
public List autoCompleteFornecedor(Object event) {
String txt = event.toString();
List<Entity> list = new ArrayList<Entity>();
Iterator<Entity> it = this.fornecedores.iterator();
while (it.hasNext()) {
Fornecedor f = (Fornecedor)it.next();
if(f.getNome().toUpperCase().contains(txt.toUpperCase())) {
list.add(f);
}
}
return list;
}
private void createPnTeste() {
this.panelX = new HtmlPanel();
HtmlInputText fornecedor = new HtmlInputText();
fornecedor.setId("itFornecedor");
HtmlSuggestionBox sbFornecedor = new HtmlSuggestionBox();
sbFornecedor.setId(fornecedor.getId()+"sb");
sbFornecedor.setVar("grupo");
sbFornecedor.setWidth("200");
sbFornecedor.setHeight("200");
sbFornecedor.setFor(fornecedor.getId());
FacesContext context = FacesContext.getCurrentInstance();
ExpressionFactory expressionFactory = context.getApplication().getExpressionFactory();
ELContext elCtx = context.getELContext();
MethodExpression me = expressionFactory.createMethodExpression(elCtx, "#{telaLogin.autoCompleteFornecedor}", List.class, new Class[]{Object.class});
sbFornecedor.setSuggestionAction(me);
HtmlColumn column = new HtmlColumn();
column.setId(sbFornecedor.getId()+"column");
HtmlOutputText ot = new HtmlOutputText();
ot.setId(column.getId()+"ot");
ValueExpression ve = expressionFactory.createValueExpression(elCtx, "#{"+sbFornecedor.getVar()+".nome}", String.class);
ot.setValueExpression("value", ve);
column.getChildren().add(ot);
sbFornecedor.getChildren().add(column);
//pn.setStyle(pn.getStyle()+" height: 300px;");
this.panelX.getChildren().add(fornecedor);
this.panelX.getChildren().add(sbFornecedor);
}
What am i doing wrong? Thanks for help.