设为首页 收藏本站
查看: 1097|回复: 0

[经验分享] [Apache Click快速开发]Click的组件(一)

[复制链接]

尚未签到

发表于 2017-1-9 10:22:26 | 显示全部楼层 |阅读模式
  Click的组件很多,功能强大,能满足绝大多数开发情况。
  您还可以书写自定义组件,当然这会花费您更多的时间,由您决定。 我们首先看一下Click自带的组件。
  我试图用一个表单来尝试显示出平常我们使用的html元素,但是发现它远不止这些,比如还有html中没有的Menu,PickList,EmialField,TablePaginator等等。
  HelloPage.java
  package com.apc.pages;import java.util.ArrayList;import java.util.List;import org.apache.click.control.ActionLink;import org.apache.click.control.FileField;import org.apache.click.control.Form;import org.apache.click.control.Option;import org.apache.click.control.PasswordField;import org.apache.click.control.Radio;import org.apache.click.control.RadioGroup;import org.apache.click.control.Select;import org.apache.click.control.Submit;import org.apache.click.control.TextField;import org.apache.click.dataprovider.DataProvider;import org.apache.click.extras.control.CheckList;public class HelloControls extends org.apache.click.Page {private Form form = new Form("controlForm");private TextField tf;private PasswordField pf;private Select select;private Select multiSelect;private CheckList cl;private RadioGroup rg;private FileField ff;public ActionLink al = new ActionLink("al", this, "onActionLinkTrigger");private void init(){//textfieldtf = new TextField("username", "账号", true);tf.setMinLength(5);tf.setMaxLength(16);//paswordfieldpf = new PasswordField("passwd", "密码", false);tf.setMinLength(6);//selectselect = new Select("gender", "性别");select.setDataProvider(new DataProvider<Option>() {public List<Option> getData() {List<Option> options = new ArrayList<Option>();options.add(new Option("男", "男"));options.add(new Option("女", "女"));return options;}});select.setValue("男");//multi-selectmultiSelect = new Select("hobby", "爱好");multiSelect.setMultiple(true);multiSelect.setDataProvider(new DataProvider<Option>() {public List<Option> getData() {List<Option> options = new ArrayList<Option>();options.add(new Option("看电影","看电影"));options.add(new Option("踢足球", "踢足球"));options.add(new Option("看书", "看书"));return options;}});multiSelect.setDefaultOption(Option.EMPTY_OPTION);//radiorg = new RadioGroup("marriage");rg.add(new Radio("未婚", "未婚"));rg.add(new Radio("已婚", "已婚"));rg.setValue("未婚");//checkboxcl = new CheckList("getway","您从哪里获知我们");cl.addAll(new String[]{"网络","电视","朋友","其他"});//filefieldff = new FileField("photo", "您的照片");}public HelloControls(){init();addControl(form);form.add(tf);form.add(pf);form.add(select);form.add(multiSelect);form.add(rg);form.add(cl);form.add(ff);form.add(new Submit("保存",this,"onSubmitClick"));form.add(new Submit("取消", this, "onCancelClick"));}public boolean onSubmitClick(){return false;}public boolean onCancelClick(){return true;}public boolean onActionLinkTrigger(){addModel("msg", "您点击了actionLink");return false;}}Page中添加了1个form表单,表单中分别添加了TextField,PasswordField,Select,RadioGroup,CheckList,FileField,ActionLink
  helloPage.htm
  <html><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=UTF-8"><title>Blank</title>$headElements</head><body><div><a href="$al.href">Learn more</a></div><div>$controlForm</div>#if($msg)<div style="width:300px;border:1px solid gray;background-color:orange;padding:5px">$msg</div>#end$jsElements</body></html>
  最终在Safari中请求helloPage您会看到
DSC0000.gif

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

  

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

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

  



  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-325888-1-1.html 上篇帖子: 【转载】增大apache 2的最大连接数 下篇帖子: Apache-collection中BidiMap、MultiMap和LazyMap的使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表