快速业务通道

怀疑论者的JSF: JSF组件开发 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
red="true" /> <br />      <arcmind:field id="price"               value="#{CDManagerBean.price}"               label="CD Price:"               errorStyleClass="errorText"               required="true">       <f:validateDoubleRange maximum="1000.0" minimum="1.0"/>      </arcmind:field>

以上标记输出以下 HTML:

<label style="" class="errorText">Artist*</label> <input type="text" id="cdForm:artist "     name=" cdForm:artist " /> Artist is blank, it must contain characters

图 5 显示了浏览器中这些内容可能显示的效果。

图 5. Field 组件

怀疑论者的JSF: JSF组件开发 - 编程入门网

怀疑论者的JSF: JSF组件开发(8)

时间:2011-04-11 IBM Rick Hightower

清单 6 显示了创建 Field 组件的代码。因为这个组件负责输入文本而不仅仅是输出它( 像 Label 那样),所以要从继承 UIInput 开始,而不是从继承 UIOutput 开始。

清单 6. Field 继承 UIInput

package com.arcmind.jsfquickstart; import javax.faces.component.UIInput; import javax.faces.context.FacesContext; /** * @author Richard Hightower *  */ public class FieldComponent extends UIInput {    private String label;    @Override    public Object saveState(FacesContext context) {      Object values[] = new Object[2];      values[0] = super.saveState(context);      values[1] = label;      return ((Object) (values));    }    @Override    public void restoreState(FacesContext context, Object state) {      Object values[] = (Object[])state;      super.restoreState(context, values[0]);      label = (String)values[1];    }    public FieldComponent (){      this.setRendererType("arcmind.Field");    }    /**    * @return Returns the label.    */    public String getLabel() {      return label;    }    /**    * @param label    * The label to set.    */    public void setLabel(String label) {      this.label = label;    }    @Override    public String getFamily() {      return "arcmind.Field";    }    public boolean isError() {      return !this.isValid();    } }

可以注意到,代表片段中遗漏了编码方法。这是因为编码和解码发生在独立的渲染器中。 我稍后会介绍它。

怀疑论者的JSF: JSF组件开发(9)

时间:2011-04-11 IBM Rick Hightower

值绑定和组件属性

虽然 Label 组件只有一个属性(JSP 属性),可是 Field 组件却有多个属性,即 label 、errorStyle、errorStyleClass 和 value。label 和 value 属性位于 Field 组件的核心 ,而 errorStyle 和 errorStyleClass 是特定于 HTML 的。因为这些属性是特定于 HTML 的 ,所以不需要让它们作为 Field 组件的属性;相反,只是把它们作为组件属性进行传递,只 有渲染器知道这些属性。

像使用 Label 组件时一样,需要用定制标记把 Field 组件绑定到 JSP,如清单 7 所示 :

清单 7. 为 FieldComponent 创建定制标记

/* * Created on Jul 19, 2004 * */ package com.arcmind.jsfquickstart; import javax.faces.application.Applic

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号