java - 在自动完成文本字段中使用面板而不是字符串

标签 java autocomplete wicket panels

我正在使用 Wicket 为网站上的搜索引擎构建用户界面。当用户输入时,结果显示在下拉列表中。因为我有很多不同的对象(每个对象都有不同的显示结构),所以我想定义几个面板。因此,对于在数据库中找到的每个项目,它都会获得正确的面板和正确的结构。因此,例如:如果搜索引擎找到一个用户,它应该只显示姓名。当找到图片时,缩略图和描述等...

现在我正在使用 AutocompleteTextField,但它只接受字符串。我考虑过在字符串中添加 html 并像那样显示它。但由于这不是一个真正干净的解决方案,我正在考虑使用面板。

那么,有人知道如何使用面板而不是 AutoCompleteTextField 中的字符串吗?

最佳答案

创建您自己的组件。使用 ListView,将其放入 WebMarkupContainer。根据 TextField 输入显示 WebMarkupContainer,并在附加到 TextField 的 OnChangeAjaxBehavior 中刷新 ListView。

这样您就可以完全控制自己想要实现的目标。

ListView 的示例代码:

   private ListView getLv(){
      ListView lv = new ListView(PANEL, new PropertyModel(this, "someList")) {
         @Override
         protected void populateItem(ListItem item) {
            Integer type = item.getModelObject().getType();
            if (type == 1) {
               item.add(new PanelType1("panel", item.getModelObject().someIdMaybe));
            } else if (type == 2) {
               item.add(new PanelType2("panel", item.getModelObject().someIdMaybe));
            }
         }
      };
      return lv;
   }

关于java - 在自动完成文本字段中使用面板而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15480544/

相关文章:

java - 缩放基于 Java 的树

java - 如何在没有循环的情况下查找列表中对象的所有索引?

javascript - jQuery 自动完成不起作用(JSON PHP 到 js)

wicket - 两个具有不同验证的提交按钮

java - 如何更改 Wicket 中 AjaxEditableLabelColumn 单元格的颜色

java - 带有 ShieldUI 的 Apache Wicket 中的多轴图表

java - Jenkins 如何在 Mac 内部设置 JAVA_HOME?

java - 如何将用户输入的整数替换为相应的字符串

php - jquery 自动完成 : autocomplete does not stop if string does not match

javascript - 当文本字段不为空时,Ajax 自动完成 jquery 不起作用