`
bclxz520
  • 浏览: 66234 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

请教:tapestry4.1中的Autocompleter的用法

阅读更多
用tapestry4.1中的dojo的Autocompleter组件时,
HTML代码:
  1. <html jwcid="@Shell" title="test" debugEnabled="true">
  2. <head>
  3. <!---->head>
  4. <body jwcid="@Body">
  5. <span jwcid="@Autocompleter" model="ognl:model" value="ognl:select"/>
  6. <!---->body>
  7. <!---->html>
页面类如下,
java 代码
  1. package autoCompleter.test;
  2. import java.util.Arrays;
  3. import org.apache.tapestry.dojo.form.DefaultAutocompleteModel;
  4. import org.apache.tapestry.dojo.form.IAutocompleteModel;
  5. import org.apache.tapestry.event.PageBeginRenderListener;
  6. import org.apache.tapestry.event.PageEvent;
  7. import org.apache.tapestry.html.BasePage;
  8. public abstract class AutoCompleter extends BasePage
  9. {
  10. public IAutocompleteModel model = null;
  11. public IAutocompleteModel getModel() {
  12. if (model == null) {
  13. model = new DefaultAutocompleteModel(Arrays.asList("aaaa","bbbb","dddd"), "id", "name");
  14. }
  15. return model;
  16. }
  17. public abstract String getSelect();
  18. public abstract String getId();
  19. public abstract String getName();
  20. }
但显示不了列表内容,郁闷了好几天都解决不了,有谁可以告诉我IAutocompleteModel的用法
分享到:
评论
3 楼 wobu20 2007-09-07  
请问楼主,为什么我复制你的代码,运行后并没有看到列表显示的内容,而且一输入就会在列表框下面显示以下信息:

DEBUG:  please consider using a mimetype of text/json-comment-filtered to avoid potential security issues with JSON endpoints

楼主能不能告诉我是哪里出问题了,可以的话,autocomplete的用法原理也一并解释一下,看了源码,理解了一点点...谢谢!
2 楼 bclxz520 2007-02-12  
发觉这个autocomplete的显示速度超慢
1 楼 bclxz520 2007-02-12  
终于知道怎么用了,现分享一下;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

import org.apache.tapestry.dojo.form.DefaultAutocompleteModel;
import org.apache.tapestry.dojo.form.IAutocompleteModel;
import org.apache.tapestry.event.PageBeginRenderListener;
import org.apache.tapestry.event.PageEvent;
import org.apache.tapestry.html.BasePage;

public abstract class AutoCompleter extends BasePage implements PageBeginRenderListener
{
	public Date date = null;
	public IAutocompleteModel model = null;
	public void pageBeginRender(PageEvent arg0) {
		setText("TEXT");
		setDate(new Date());
	}	
	public IAutocompleteModel getModel() {
	    if (model == null) {
	    	List values = new ArrayList();
	        
	        SimpleBean s1 = new SimpleBean(new Integer(1), "Simple 1", 100);
	        SimpleBean s2 = new SimpleBean(new Integer(2), "Simple 2", 200);
	        SimpleBean s3 = new SimpleBean(new Integer(3), "Simple 3", 300);
	        
	        values.add(s1);
	        values.add(s2);
	        values.add(s3);
	        
	        model = new DefaultAutocompleteModel(values, "id", "label");
	    }
	    return model;
	  }
	public abstract void setText(String text);
	public abstract String getText();
	public abstract SimpleBean getSelect();
	public void formSubmit()
	{
		System.out.println(getDate());
		System.out.println(getSelect().getValue());		
	}
	public void setDate(Date d)
	{
		if(date == null)
		{
			this.date = new java.util.Date(); 
		}
		else
		{
			this.date = d;
		}
	}
	public abstract Date getDate();
	
}

package autoCompleter.test;


public class SimpleBean
{

    private Integer _id;
    
    private String _label;
    
    private int _value;
    
    public SimpleBean(Integer id, String label, int value)
    {
        _id = id;
        _label = label;
        _value = value;
    }
    
    /**
     * @return the id
     */
    public Integer getId()
    {
        return _id;
    }
    
    /**
     * @return the label
     */
    public String getLabel()
    {
        return _label;
    }
    
    /**
     * Returns the value stored.
     * 
     * @return The value stored.
     */
    public int getValue()
    {
        return _value;
    }

    /** 
     * {@inheritDoc}
     */
    @Override
    public int hashCode()
    {
        final int PRIME = 31;
        int result = 1;
        result = PRIME * result + ((_id == null) ? 0 : _id.hashCode());
        return result;
    }
    
    /** 
     * {@inheritDoc}
     */
    @Override
    public boolean equals(Object obj)
    {
        if (this == obj) return true;
        if (obj == null) return false;
        if (getClass() != obj.getClass()) return false;
        final SimpleBean other = (SimpleBean) obj;
        if (_id == null) {
            if (other._id != null) return false;
        } else if (!_id.equals(other._id)) return false;
        return true;
    }
}

相关推荐

    tapestry官方中文文档

    在Tapestry中,大多数的编程都是声明式的,这意味着开发者可以使用XML或注解来定义页面和组件的行为,而不是编写大量的Java代码。这降低了代码的复杂性,提高了可读性和维护性。 4. **页面和组件生命周期**: ...

    Tapestry-3.0.rar

    在Tapestry 3.0中,主要知识点包括: 1. **组件模型**:Tapestry的核心是组件模型,它将HTML元素和Java类绑定,使得网页的创建更为结构化和模块化。每个组件都是一个自包含的单元,有自己的状态、行为和界面表示。 ...

    Tapestry通用WEB框架

    6. **切换皮肤**:在Tapestry中,可以轻松实现皮肤的切换,这通常涉及到更换CSS样式表和可能的图片资源。开发者可以通过配置文件或程序逻辑来改变应用的外观,满足不同用户需求。 7. **自主分页**:Tapestry提供了...

    tapestry4.1.6

    3. **事件驱动**:Tapestry 使用事件驱动模型,当用户操作组件时,会触发相应的事件,然后框架会调用相应的方法处理这些事件。这种模型简化了页面间和组件间的交互。 4. **自动页面状态管理**:Tapestry 自动管理...

    Tapestry

    【Tapestry】是一个强大的Java Web应用程序框架,它允许开发者使用组件化的方式来构建动态、交互式的Web应用。Tapestry的出现旨在解决传统JSP和Servlet开发中的复杂性问题,提供更加面向对象和模块化的开发体验。在...

    tapestry最基本jar包

    在这个"tapestry最基本jar包"中,包含了Tapestry 5.3版本的基础库文件,为开发者提供了构建Web应用所需的基本功能。 Tapestry 5.3 是一个重要的里程碑,它引入了许多改进和新特性,以提升开发效率和应用性能。以下...

    Tapestry5.0.7

    - **tapestry-spring**:Tapestry与Spring框架的集成模块,便于在Spring环境中使用Tapestry。 总的来说,Tapestry 5.0.7 是一个强大且灵活的Web开发框架,它的组件化、模版驱动和依赖注入等特性为Java开发者提供了...

    Tapestry4开发指南.rar

    《Tapestry4开发指南》是一份针对Tapestry 4框架的详尽教程,旨在帮助开发者深入理解和熟练运用这一强大的Web应用开发工具。Tapestry是一个开源的Java框架,由Apache软件基金会维护,它提供了组件化、MVC模式以及...

    Tapestry 5开发指南(英文)

    - **页面和组件路径**:Tapestry 5使用声明式的方式映射URL到页面和组件,简化了路由和导航。 - **链接生成**:生成安全、语义化的链接是Tapestry 5的强项,它会自动处理URL参数和安全需求。 6. **国际化和本地化...

    深入浅出Tapestry4一书源代码(1)

    在源代码中,"IceRoom"可能是一个示例项目,它展示了如何使用Tapestry4创建动态Web页面。IceRoom项目可能包含了各种组件、服务、页面和模板文件,这些文件共同构成了一个功能完整的Web应用。通过调试这个项目,你...

    Tapestry开发指南0.9

    在Tapestry开发中,以下是一些关键知识点: 1. **组件化编程**:Tapestry的核心理念是组件化。开发者可以创建可重用的组件,每个组件都是一个独立的HTML元素或页面部分,有自己的状态和行为。组件可以嵌套,形成...

    Tapestry_5[1].1_实例教程

    2. **类型安全的事件处理**:Tapestry 5支持类型安全的事件处理,这意味着你可以通过方法签名来确定事件处理器,避免了常见的字符串硬编码错误。 3. **自动Ajax支持**:Tapestry 5内置了对Ajax的支持,开发者可以...

    tapestry5.2.6 jar包

    使用Tapestry 5.2.6进行开发,开发者可以获得一套完整的MVC架构,以及丰富的工具和库支持。通过声明式编程和组件模型,可以更专注于业务逻辑,而不是底层的HTML和JavaScript代码。此外,Tapestry还提供了优秀的性能...

    Tapestry4的入门资料

    这个框架的主要目标是提供一种高效、易于理解和使用的工具,用于构建动态、数据驱动的Web应用。以下是一些关于Tapestry4的重要知识点: 1. **组件化开发**:Tapestry4的核心特性之一是组件化编程,它允许开发者将...

    tapestry 实例

    3. **事件驱动**:Tapestry 采用事件驱动模型,用户操作可以触发组件内的事件,进而调用相应的处理方法。这种方式简化了页面与服务器间的交互逻辑。 4. **模板和元数据**:每个组件都有一个HTML模板,用于定义组件的...

    Tapestry 5.1 实例教程(全部)

    3. **部署与性能监控**:了解如何在生产环境中部署Tapestry应用,并使用Tapestry提供的监控工具进行性能分析。 **四、实战案例** 教程中的实战案例将帮助你将所学知识应用于实际项目。这些案例可能包括用户登录...

    Tapestry 5 Project 5.0.16 API

    Tapestry 5.0.16 API是该框架的一个特定版本,包含了该版本所支持的所有类、接口、方法和功能的详细文档。 在Tapestry 5中,API扮演着核心角色,因为它定义了开发者如何与框架进行交互。以下是Tapestry 5.0.16 API...

Global site tag (gtag.js) - Google Analytics