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.