JSF2自定义组件编程系列 第六部分
来源:互联网 发布:如何下载股票交易数据 编辑:程序博客网 时间:2024/05/16 10:40
在前一个例子中,我创建了一个Backing class:HtmlInput2,这是用来代表Composite Component的顶层对象NamingContainer的类。这给了一个机会让我可以覆盖encode/decode方法,从而用Java代码增强Composite Compnent的行为。
本例子更进一步,再创建一个Managed Bean,用来接收用户的输入,拦截点击按钮事件,并显示用户的输入。注意,这个新的Managed Bean在我的jsfex项目内,因此实际上是Composite Compnent内部实现的一部分,并不要求用户定义。创建这个例子只是为了说明其实添加Managed Bean和普通的JSF开发没有区别。
现在修改一下htmlinput2.xhtml代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface componentType="HtmlInput2">
<!—editableValueHolder is desigend for validator —>
<composite:editableValueHolder name="inputField" target="in"/>
<composite:valueHolder name="outputField" target="out"/>
</composite:interface>
<composite:implementation>
<h:inputText id="in" value="#{inputBean.value}" required="true"/>
<h:commandButton id="clickButton" value="Click Me!" actionListener="#{inputBean.print}"/>
<h:outputText id="out" value="#{inputBean.value}"/>
</composite:implementation>
</html>
在com.freebird.component包下创建一个InputBean类。
package com.freebird.component;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.event.ActionEvent;
/**
* Describe class InputBean here.
*
*
* Created: Fri Jan 7 14:15:36 2011
*
* @author <a href="mailto:chenshu@csdesktop">chenshu</a>
* @version 1.0
/
@ManagedBean(name="inputBean")
@RequestScoped
public class InputBean {
/*
* Describe value here.
/
private String value;
/*
* Creates a new InputBean
instance.
*
/
public InputBean() {
}
private Logger getLogger(){
return Logger.getLogger(getClass().getName());
}
public void print(ActionEvent event){
getLogger().info("enter print method");
}
/*
* Get the Value
value.
*
* @return a String
value
/
public final String getValue() {
getLogger().info("enter getValue:"+value);
return value;
}
/*
* Set the Value
value.
*
* @param newValue The new Value value.
/
public final void setValue(final String newValue) {
getLogger().info("enter setValue:"+newValue);
this.value = newValue;
}
}
同时,把原来HtmlInput2.java中的encodeBegin代码去掉。 注意,这里的拦截点击按钮事件的print方法只是打印了一个日志。只是为了说明我们能够在内部轻松的处理事件。
- JSF2自定义组件编程系列 第六部分
- JSF2自定义组件编程系列 第一部分
- JSF2自定义组件编程系列 第二部分
- JSF2自定义组件编程系列 第三部分
- JSF2自定义组件编程系列 第四部分
- JSF2自定义组件编程系列 第五部分
- JSF2自定义组件编程系列 第七部分
- JSF2自定义组件编程系列 第八部分
- JSF2自定义组件
- JSF2.0实战 - 4、自定义组件
- 关于JSF2中自定义组件处理表单值的一些问题
- jsf2 自定义 标签校验器
- 自定义组件系列---第一篇
- JSF2之模板和复合组件
- JSF2+Primefaces简单应用系列(一)
- JSF2.0实战 - 7、自定义<h:head>
- 58-总结-【cartographer源码分析】系列的第六部分【 mapping 】
- 【Apollo源码分析】系列的第六部分【planning】
- 该资源为版权方声明保护内容,狗狗已屏蔽器下载--解决方案
- C#中timer类的用法
- POJ 1595 Prime Cuts 简单素数打表
- 使用POSIX pthread库进行多线程编程
- PHP获取整页HTML代码的方法
- JSF2自定义组件编程系列 第六部分
- ASP.NET 页面中文乱码
- 盛大EverBox网盘
- 16天记住7000考研词汇
- 瑕疵追踪与Kanban
- IE 7 不弹出提示框,自动关闭窗体
- ItemsControl Class
- [SQL Server]系统存储过程,视图的ddl语句
- 报表设计