jsf的ajax框架增强版QFaces

本文详细介绍了QFaces框架中的多种组件及其使用方法,包括ajax验证标签、InputHelp标签及超级联动组件Linkage标签等,并提供了具体的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一使用
1.qfaces.jar,commons-fileupload-1.2.jar,commons-io-1.3.2.jar   
2 web.xml配置文件
<servlet>
        <servlet-name>QFaces</servlet-name>
        <servlet-class>name.huliqing.qfaces.FacesServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>QFaces</servlet-name>
        <url-pattern>*.qfaces</url-pattern>
    </servlet-mapping>

3.组件使用:
 在jsp页面头部增加以下的标签引用即可使用控件。
<%@ taglib prefix="q" uri="http://huliqing.name/qfaces" %>
<h:inputText id="sid" value="#{UIValidatorBean.domain1.sid1}" />
<q:validator for="sid" type="Abc" minLength="2" maxLength="10" />
打开页面还是按照jsf的方式打开,不用什么*.qfaces,为什么?
二标签
1.ajax验证标签(提示要改成中文的????)
2.InputHelp标签该组件可以辅助InputText等的录入工作,
提供录入帮助信息
使用一:
将for指定到目标组件的id, 后台提供侦听方法, 返回选项列表, 即可为目标组件提供录入支持.
<q:inputHelp for="myInput1" listener="#{UIInputHelpBean.listenerRefOneValue}">
<h:inputText id="myInput1" value="" />
</q:inputHelp>
后台的listenerRefOneValue方法可以像这样,从args[0]中获得当前目标组件的页面值,并返回选项列表.
public List<String> listenerRefOneValue(String[] args) {
    List<String> result = new ArrayList<String>(5);
    String targetValue = args[0];   // 取回目标组件的值
    for (int i = 0; i < 5; i++) {
        result.add("row" + i + targetValue);
    }
    return result;
}
使用二 高级使用,传多个值。
高级一点的用法, 组件引用到了页面中的多个组件的值,id1,id2,id3, 并且显示了表格标题,页页脚信息.
<h:inputText id="id1" value="value1" />
<h:inputText id="id2" value="value2" />
<h:inputText id="id3" value="value3" />
<q:inputHelp for="myInput2" ref="id1,id2,id3"
listener="#{UIInputHelpBean.listenerRefManyValue}"
header="帐号,用户名,电话" 
footer="QQ:31703299 huliqing@live.com" >
<h:inputText id="myInput2" value="" />
</q:inputHelp>
后台listener所绑定的方法listenerRefManyValue可以像下面这样, 返回列表以多列形式,这样可以提供更多的信息给操作用户!具体效果请请参考示例图片.
public List<List<String>> listenerRefManyValue(String[] args) {
    List<List<String>> result = new ArrayList<List<String>>();
    String refValue1 = args[0]; // 依次取得所引用的组件的值
    String refValue2 = args[1];
    String refValue3 = args[2];
    for (int i = 0; i < 5; i++) {
        List<String> aa = new ArrayList<String>(3);
        aa.add("row" + i + refValue1);
        aa.add("row" + i + refValue2);
        aa.add("row" + i + refValue3);
        result.add(aa);
    }
    return result;
}
3.Linkage标签(要从数据库读取)OK
超级联动组件,可以帮助你实现级联选择
<!-- 国家,省份,城市,城区,街道-->
<h:selectOneMenu id="country"   value="#{LinkageBean.country}">
 <f:selectItem itemValue="" itemLabel="" />
 <f:selectItem itemValue="China" itemLabel="中国" />
</h:selectOneMenu>
<h:selectOneMenu id="province" value="#{LinkageBean.province}" />
<h:selectOneMenu id="city" value="#{LinkageBean.city}"/>
<h:selectOneMenu id="area" value="#{LinkageBean.area}"/>
<h:selectOneMenu id="street" value="#{LinkageBean.street}"/>
<q:linkage for="country, province, city, area, street" listener="#{LinkageBean.listener}" />

3.2(要从数据库读取)OK

 省市县      <!-- 国家,省份,城市,县-->
    <h:selectOneMenu id="province" value="#{projectBean.province}" >
      <f:selectItems value="#{projectBean.listNationPct2}" />
    </h:selectOneMenu>
    <h:selectOneMenu id="city" value="#{projectBean.city}"/>
    <h:selectOneMenu id="area" value="#{projectBean.area}"/>
    <q:linkage for="province, city, area" listener="#{projectBean.listener}" />
               

 

 public Items listener(Level level) {
        if (level.getLevel() == 0) { // 如果触发的是第一级(省级)的选择,返回市级列表
            Items items = new Items();
            List<NationPct> list=nationPctService.getNationPctByFather(Integer.parseInt(level.getValue()));
             if (list != null && list.size() > 0) {
        for (int i = 0; i < list.size(); i++) {
         NationPct nt = (NationPct) list.get(i);
         Item b = new Item(nt.getId().toString(), nt.getName());
         items.add(b);
         }}
            return items;
        } else if (level.getLevel() == 1) { // 如果触发的是第二级(市级)的选择
            Items items = new Items();
            List<NationPct> list=nationPctService.getNationPctByFather(Integer.parseInt(level.getValue()));
            if (list != null && list.size() > 0) {
    for (int i = 0; i < list.size(); i++) {
     NationPct nt = (NationPct) list.get(i);
     Item b = new Item(nt.getId().toString(), nt.getName());
      items.add(b);
    }}
            return items;
        } else if (level.getLevel() == 2) { // 如果触发的是第三级(县)的选择
            Items items = new Items();
            List<NationPct> list=nationPctService.getNationPctByFather(Integer.parseInt(level.getValue()));
            if (list != null && list.size() > 0) {
    for (int i = 0; i < list.size(); i++) {
     NationPct nt = (NationPct) list.get(i);
     Item b = new Item(nt.getId().toString(), nt.getName());
      items.add(b);
    }}
            return items;
        }
        return null;
}

 private Integer province;
 private Integer city;
 private Integer area;

 

 

4.FileUpload标签
使用出错了???

附件:
参考csdn空间5/QFaces-1.2.zip
实现 csdn空间5/QFaces.rar

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值