下一代的B/S开发框架--Echo 教程(7)

原创 2003年03月19日 09:12:00

下一代的B/S开发框架--Echo 教程(7)

编写自己的控件

羡慕EchoPoint的控件吗? 别担心, 你一样可以做.

写控件可以分两种方法: 搭积木和造积木.

A: 搭积木

在教程(5)中, 我们实现了可编辑的下拉菜单. 其实不过是一些已有控件的组合, 就象搭积木一样. 注意: 在OO编程中, 这些搭出来的积木是可重用的, 就象在Echo Demo中可以隐藏的帮助区域.

在制作网站的过程中, 我们通常会把页面划分成几个大区域, 每个大区域又可以划分成几个小的区域. 在不同页面这些区域大部分都是重复的, 或者稍有变化. 比如Banner/导航条/购物车. 我们可以把它们包装成独立的控件, 并且实现动态效果.

在HTML中, 我们经常会用到CSS来改变网站的风格. 在Echo中, 可以自行扩展每个Echo控件. 然后用这些扩展的控件来构造你的网站. 这样似乎有些Crazy, 但是想想看: 调整这些控件, 网站的整体风格会一起改变. 甚至你对控件增加功能, 让每个输入框在"向下"键时都自动Tab到下一个. 这些工作在传统网站制作中浪费了很多时间.

B: 造积木

Echo不会让JS高手失业. 它只会让你告别枯燥无味的重复劳动, 专注于开发高难度的控件. 这里给出一个在页面上构造Link的例子. 它的Component很简单:

package org.steeven.component;
import nextapp.echo.Component;
public class  {
  private String text;
  private String url;
  public  {
    this.text = text;
    this.url = url;
  }
  public Link(String url) {
    this(url,url);
  }
  public String getText() {
    return text;
  }
  public String getUrl() {
    return url;
  }
  public void setText(String newValue) {
    String oldValue = text;
    text = newValue;
    
  }
  public void setUrl(String newValue) {
    String oldValue = url;
    url = newValue;
    
  }
}

下面是负责输出为HTML的Peer类:

package org.steeven.component;
import java.beans.*;
import nextapp.echoservlet.*;
import nextapp.echoservlet.html.*;

public class  {
    public static void register() {
        //配置文件名为:PeerBindings.properties, 在相同目录下
        EchoServer.loadPeerBindings("org.steeven.component.PeerBindings");
    }
    public void propertyChange(PropertyChangeEvent e) {
        redraw();
    }
    public void registered() {
        getComponent().addPropertyChangeListener(this);
    }
    public void unregistered() {
        getComponent().removePropertyChangeListener(this);
    }
    public void  {
        Link link = (Link) getComponent();
        Element element = new Element("a", false);
        element.addAttribute("target","_blank");
        element.addAttribute("href", link.getUrl());
        element.addText(link.getText());
        parent.addElement(element);
    }
}

关键部分就在render()方法中. 具体操作类似XML, 它构造了一小段HTML: <a target="_blank" href="url">text</a>. 注意几点:

  1. 参数RenderingContext提供了HTTP信息和当前文档信息. 要通过它添加全局脚本和CSS.
  2. 更多信息请参考Echo网站上的教程.
  3. 如果你写出很好的控件可以贡献给EchoPoint, 具体方式参见EchoPoint主页.

 

下一代的B/S开发框架--Echo 教程(7)

编写自己的控件羡慕EchoPoint的控件吗? 别担心, 你一样可以做. 写控件可以分两种方法: 搭积木和造积木.A: 搭积木在教程(5)中, 我们实现了可编辑的下拉菜单. 其实不过是一些已有控件的组...
  • ShawnNee
  • ShawnNee
  • 2008年06月12日 17:41
  • 225

下一代的B/S开发框架--Echo 教程(5)

下一代的B/S开发框架--Echo 教程(5) 可编辑的下拉列表我们知道HTML页面上的下拉列表是不可编辑的. Echo可以让我们轻松的变相实现. 先看看这个ComboBox怎么用://下拉列表数据S...
  • steeven
  • steeven
  • 2003年03月14日 09:12
  • 1507

下一代的B/S开发框架--Echo 教程(5)

可编辑的下拉列表我们知道HTML页面上的下拉列表是不可编辑的. Echo可以让我们轻松的变相实现. 先看看这个ComboBox怎么用://下拉列表数据String[] member = new Str...
  • ShawnNee
  • ShawnNee
  • 2008年06月12日 17:38
  • 364

下一代的B/S开发框架--Echo 教程(9)

下一代的B/S开发框架--Echo 教程(9) 优点/缺点这个话题本来放倒本教程的开头, 但是我想让各位从前面的的例子中做出自己的评价, 看看我们的结论是否一致:优点:用OO的方法开发B/S程序, 完...
  • steeven
  • steeven
  • 2003年03月25日 09:33
  • 1720

下一代的B/S开发框架--Echo 教程(1)

下一代的B/S开发框架--Echo 教程(1) 独乐乐不如同乐乐, 每当有点发现我总喜欢写下来同大家分享, 也希望得到指点和帮助. 写教程是个辛苦活, 但是这里有个小小的阴谋, 等大家咬钩了再说 :)...
  • steeven
  • steeven
  • 2003年03月18日 08:56
  • 1716

下一代的B/S开发框架--Echo 教程(6)

下一代的B/S开发框架--Echo 教程(6) HTML模板JSF和Tapestry是都是基于模板的Java WEB框架, 但是在使用前要学习它们的特定语法规则. Echo本身没有提供HTML模板, ...
  • steeven
  • steeven
  • 2003年03月18日 08:53
  • 1396

下一代的B/S开发框架--Echo 教程(2)

原理先看看Echo的效果: 比如在Echo的DEMO中, 我们点击"Disaplay Help"的复选框, 提示信息不见了, 但是整个页面却没有任何变化! 包括你选择的下拉列表和输入框中随意敲的文字,...
  • ShawnNee
  • ShawnNee
  • 2008年06月12日 16:53
  • 273

下一代的B/S开发框架--Echo 教程(4)

下一代的B/S开发框架--Echo 教程(4) 模式窗口的实现熟悉浏览器的人都知道, 浏览器上很难实现模式窗口, 就是那种一直在最上面的子窗口并且能禁止对父窗口的操作. 在B/S编程中碰到这种问题一般...
  • steeven
  • steeven
  • 2003年03月13日 09:02
  • 1572

下一代的B/S开发框架--Echo 教程(4)

模式窗口的实现熟悉浏览器的人都知道, 浏览器上很难实现模式窗口, 就是那种一直在最上面的子窗口并且能禁止对父窗口的操作. 在B/S编程中碰到这种问题一般都会返回一个新页面, 然后用链接回到原来的页面....
  • ShawnNee
  • ShawnNee
  • 2008年06月12日 17:36
  • 265

下一代的B/S开发框架--Echo 教程(3)

HelloWorld编写Echo应用, 只需要一个Servlet和一个Instance, 剩下的就是开发页面了./************MainServlet.java************ * ...
  • ShawnNee
  • ShawnNee
  • 2008年06月12日 16:55
  • 261
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:下一代的B/S开发框架--Echo 教程(7)
举报原因:
原因补充:

(最多只允许输入30个字)