首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Autocompletetextfield中使用面板而不是字符串

在Autocompletetextfield中使用面板而不是字符串
EN

Stack Overflow用户
提问于 2013-03-18 23:28:18
回答 3查看 197关注 0票数 1

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

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-19 02:38:39

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

这样你就可以完全控制你想要实现的目标了。

ListView的示例代码:

代码语言:javascript
代码运行次数:0
运行
复制
   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;
   }
票数 3
EN

Stack Overflow用户

发布于 2013-03-19 00:23:47

AutoCompleteTextField使用newAutoCompleteBehavior-hookmethod来创建显示选项的行为。此钩子方法以IAutoCompleteRenderer作为参数。这个渲染器实际上是在做显示部分。因此,您可以将自己的渲染器传递给AutoCompleteTextField (有一个接受渲染器的构造函数),也可以将AutoCompleteTextField子类化以覆盖工厂方法。无论采用哪种方式,您都必须提出自己的IAutoCompleteRenderer实现,因为wicket中没有这样的实现,而且渲染器本身将受到当前应用程序设计的严重影响。

票数 3
EN

Stack Overflow用户

发布于 2013-03-19 00:32:41

我认为使用面板是不可能的,因为面板是一个组件,本身可以是任何东西。要将任何面板作为自动完成列表的一部分来支持将是非常困难的。如果有一个自动补全元素作为带有自动补全字段的表单,那会很有趣;)

因此,这就是为什么有IAutoCompleteRenderer接口允许您为元素生成任何html标记,而不是作为面板。

作为一种选择,也许可以使用ModalWindow弹出某种模式的ajax对话框窗口。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15480544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档