打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[Apache Click快速开发]Click的组件(一)

[Apache Click快速开发]Click的组件(一)

分类: Java 288人阅读 评论(4) 收藏 举报

Click的组件很多,功能强大,能满足绝大多数开发情况。

您还可以书写自定义组件,当然这会花费您更多的时间,由您决定。 我们首先看一下Click自带的组件。

我试图用一个表单来尝试显示出平常我们使用的html元素,但是发现它远不止这些,比如还有html中没有的Menu,PickList,EmialField,TablePaginator等等。

HelloPage.java

  1. package com.apc.pages;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import org.apache.click.control.ActionLink;  
  7. import org.apache.click.control.FileField;  
  8. import org.apache.click.control.Form;  
  9. import org.apache.click.control.Option;  
  10. import org.apache.click.control.PasswordField;  
  11. import org.apache.click.control.Radio;  
  12. import org.apache.click.control.RadioGroup;  
  13. import org.apache.click.control.Select;  
  14. import org.apache.click.control.Submit;  
  15. import org.apache.click.control.TextField;  
  16. import org.apache.click.dataprovider.DataProvider;  
  17. import org.apache.click.extras.control.CheckList;  
  18.   
  19. public class HelloControls extends org.apache.click.Page {  
  20.     private Form form = new Form("controlForm");  
  21.     private TextField tf;  
  22.     private PasswordField pf;  
  23.     private Select select;  
  24.     private Select multiSelect;  
  25.     private CheckList cl;  
  26.     private RadioGroup rg;  
  27.     private FileField ff;  
  28.     public ActionLink al = new ActionLink("al"this"onActionLinkTrigger");  
  29.       
  30.     private void init(){  
  31.         //textfield   
  32.         tf = new TextField("username""账号"true);  
  33.         tf.setMinLength(5);  
  34.         tf.setMaxLength(16);  
  35.         //paswordfield   
  36.         pf = new PasswordField("passwd""密码"false);  
  37.         tf.setMinLength(6);  
  38.         //select   
  39.         select = new Select("gender""性别");  
  40.         select.setDataProvider(new DataProvider<Option>() {  
  41.             public List<Option> getData() {  
  42.                 List<Option> options = new ArrayList<Option>();  
  43.                 options.add(new Option("男""男"));  
  44.                 options.add(new Option("女""女"));  
  45.                 return options;  
  46.             }  
  47.         });  
  48.         select.setValue("男");  
  49.         //multi-select   
  50.         multiSelect = new Select("hobby""爱好");  
  51.         multiSelect.setMultiple(true);  
  52.         multiSelect.setDataProvider(new DataProvider<Option>() {  
  53.             public List<Option> getData() {  
  54.                 List<Option> options = new ArrayList<Option>();  
  55.                 options.add(new Option("看电影","看电影"));  
  56.                 options.add(new Option("踢足球""踢足球"));  
  57.                 options.add(new Option("看书""看书"));  
  58.                 return options;  
  59.             }  
  60.         });  
  61.         multiSelect.setDefaultOption(Option.EMPTY_OPTION);  
  62.         //radio   
  63.         rg = new RadioGroup("marriage");  
  64.         rg.add(new Radio("未婚""未婚"));  
  65.         rg.add(new Radio("已婚""已婚"));  
  66.         rg.setValue("未婚");  
  67.           
  68.         //checkbox   
  69.         cl = new CheckList("getway","您从哪里获知我们");  
  70.         cl.addAll(new String[]{"网络","电视","朋友","其他"});  
  71.         //filefield   
  72.         ff = new FileField("photo""您的照片");  
  73.           
  74.     }  
  75.       
  76.     public HelloControls(){  
  77.         init();  
  78.           
  79.         addControl(form);  
  80.         form.add(tf);  
  81.         form.add(pf);  
  82.         form.add(select);  
  83.         form.add(multiSelect);  
  84.         form.add(rg);  
  85.         form.add(cl);  
  86.         form.add(ff);  
  87.         form.add(new Submit("保存",this,"onSubmitClick"));  
  88.         form.add(new Submit("取消"this"onCancelClick"));  
  89.     }  
  90.     public boolean onSubmitClick(){  
  91.         return false;  
  92.     }  
  93.     public boolean onCancelClick(){  
  94.         return true;  
  95.     }  
  96.     public boolean onActionLinkTrigger(){  
  97.         addModel("msg""您点击了actionLink");  
  98.         return false;  
  99.     }  
  100. }  
Page中添加了1个form表单,表单中分别添加了TextField,PasswordField,Select,RadioGroup,CheckList,FileField,ActionLink

helloPage.htm

  1. <html>  
  2.   <head>  
  3.     <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=UTF-8">  
  4.     <title>Blank</title>  
  5.     $headElements  
  6.   </head>  
  7.   <body>  
  8.   <div><a href="$al.href">Learn more</a></div>  
  9.   <div>$controlForm</div>  
  10.   #if($msg)  
  11.         <div style="width:300px;border:1px solid gray;background-color:orange;padding:5px">$msg</div>  
  12.   #end  
  13.   $jsElements  
  14.   </body>  
  15. </html>  

最终在Safari中请求helloPage您会看到


初始化TextField的时候可以添加第三个参数来表示需要非空验证,如 tf = new TextField("username", "账号", true); 所以,当您未填写任何信息的时候,点击提交会出现错误提示,这就为我们节省了很多去写验证方法的事件,看看它的提示信息是怎样的吧.。



我还加入了最简单的actionlink事件,点击上方的 learn more 下面就会出现msg的提示,你所要做的只是在处理方法中用addModel,将消息添加到model中。


总结:Click的组件直接在java文件中编译好,速度很快;基于事件驱动的方式也是不错的。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
iOS 各种传值方式
JSP中使用log的方法
在java中如何实现画图
java客户端调用.Net服务
Android之向中国天气网发送GET请求获取JSON数据实例
httpclient
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服