JSF实现自定义验证程序

如果您使用JSP作为Web应用程序的视图(通常是这样的),那么您就可以使用 <faces:validator>标签来为JSF组件指定验证程序,如下面的代码所示: 上面的代码片断将一个验证程序与一个文本字段关联起来。您只要使用<faces:validate>标签的className属性来指定验证程序的类名。上面指定的验证程序是一个JSF内置的验证程序,用于确保一个组件的值不为null。JSF提供了很多内置的验证程序,但您也可以实现自己的验证程序,并将它们与一个JSF组件关联起来。

< faces:textentry_input  id ='name'> 
   
<faces:validator className ='javax.faces.validator.RequiredValidator'/>
</faces:textentry_input >

 

 

<! DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN' >
< html >
   
< head >
      
< title > A Simple JavaServer Faces Application </ title >
   
</ head >

   
< body >
      
<% @ taglib uri='http://java.sun.com/j2ee/html_basic/' prefix='faces' %>

      
<font size='4'>Please enter your name and password</font>

      
<faces:usefaces>
         
<faces:form id='simpleForm' formName='simpleForm'>
            <table>
               
<tr>
                  
<td>Name:</td>
                  
<td>
                     
<faces:textentry_input id='name'> 
                           <faces:validator 
                                  className
='com.sabreware.validators.NameValidator'/>
                           <faces:validator 
                                  className
='javax.faces.validator.LengthValidator'/>
                           <faces:attribute 
                                       name
='javax.faces.validator.LengthValidator.MINIMUM'
                                  value='3'/>
                       </faces:textentry_input>
                  
</td>

                  
<td>
                     
<faces:validation_message componentId='name'/>
                  </td>
               
</tr>

               
<tr>
                  
<td>Password:</td>
                  
<td>
                     
<faces:textentry_secret id='password'/> 
                  </td>
               
</tr>
            
</table>

            
<p><faces:command_button id='submit' commandName='Log In'/>
         </faces:form>
      
</faces:usefaces>
   
</body>
</html>
前述的JSP页面使用 <faces:validator>标签来将验证程序与一个JSF组件关联起来。在这种情形中,验证程序是一个验证用户名的自定义验证程序和一个JSF内置验证程序,用于保证用户名至少有3个字符长。

 

清单2中列出了清单1中使用的自定义验证程序。

清单2. WEB-INF/classes/com/sabreware/validators/NameValidator.java

package  com.sabreware.validators;

import  java.util.Iterator;
import  javax.faces.component.UIComponent;
import  javax.faces.component.AttributeDescriptor;
import  javax.faces.context.FacesContext;
import  javax.faces.context.Message;
import  javax.faces.context.MessageImpl;
import  javax.faces.validator.Validator;

public   class  NameValidator  implements  Validator  {
   
public AttributeDescriptor getAttributeDescriptor(String attributeName) {
      
return null;   
   }

   
public Iterator getAttributeNames() {
      
return null;   
   }

   
public void validate(FacesContext context, UIComponent component) {
      String name 
= (String)component.getValue();

      
if(!"phillip".equalsIgnoreCase(name)) {
         context.addMessage(component,
            
new MessageImpl(Message.SEVERITY_ERROR, "bad username",
                        
"The username " + name + " is invalid"));
      }

   }

}




 

 

前述的验证程序实现了javax.faces.validator.Validator接口,而该接口定义了以下方法:

  • void validate(FacesContext, UIComponent)
  • Iterator getAttributeNames(String)
  • AttributeDescriptor getAttributeDescriptor(String)

validate()方法为指定的组件执行实际的验证。 Validator接口定义的另外两个方法被工具用来发现与特定验证程序相关的属性(及其描述)。在这种情形下,验证程序没有任何属性,因此getAttributeDescriptor()和getAttributeNames()方法只返回null。

如果组件的值是有效的,那么验证程序的validate()方法就什么都不做。如果其值是无效的,validator()方法就会创建消息将其添加到JSF上下文中。所有的这一切发生在JSF生命周期的Process Validations阶段。如果一个组件验证失败(表明已经将消息添加到JSF上下文中),JSF实现就直接进入Render Response阶段。否则,生命周期进入Apply Model Values阶段 

 

原文摘自(有删改):http://www.dmresearch.net/it-doc/1000000317/1000063243.php

内容概要:文章以“智能网页数据标注工具”为例,深入探讨了谷歌浏览器扩展在毕业设计中的实战应用。通过开发具备实体识别、情感分类等功能的浏览器扩展,学生能够融合前端开发、自然语言处理(NLP)、本地存储与模型推理等技术,实现高效的网页数据标注系统。文中详细解析了扩展的技术架构,涵盖Manifest V3配置、内容脚本与Service Worker协作、TensorFlow.js模型在浏览器端的轻量化部署与推理流程,并提供了核心代码实现,包括文本选择、标注工具栏动态生成、高亮显示及模型预测功能。同时展望了多模态标注、主动学习与边缘计算协同等未来发展方向。; 适合人群:具备前端开发基础、熟悉JavaScript和浏览器机制,有一定AI模型应用经验的计算机相关专业本科生或研究生,尤其适合将浏览器扩展与人工智能结合进行毕业设计的学生。; 使用场景及目标:①掌握浏览器扩展开发全流程,理解内容脚本、Service Worker与弹出页的通信机制;②实现在浏览器端运行轻量级AI模型(如NER、情感分析)的技术方案;③构建可用于真实场景的数据标注工具,提升标注效率并探索主动学习、协同标注等智能化功能。; 阅读建议:建议结合代码实例搭建开发环境,逐步实现标注功能并集成本地模型推理。重点关注模型轻量化、内存管理与DOM操作的稳定性,在实践中理解浏览器扩展的安全机制与性能优化策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值