`
yourenyouyu2008
  • 浏览: 286750 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

转换器和验证器中使用表达式的限制

    博客分类:
  • jsf
F# 
阅读更多

限制

有个需求要对订单项中的数量进行库存验证 ,想到给验证器的属性用表达式     ,结果却事与愿违。

    验证器中的属性可以写表达式,但是表达式是由faceslet来执行的,faceslet构造页面验证组件时执行表达式,将表达式的值保存进验证组件中,页面再次提交验证时是不会再去执行表达式的。

当验证器出现在table循环中时问题就很明显了。

<h:dataTable value=”#{….}” var=”_var”>

<h:column id="column3">

<h:inputText id="amountid" value="#{_var.goodsAmount}">

<f:validateLongRange maximum="#{_var.aa.amount}"/>

</h:inputText>

构造验证组件时_var.aa.amount的值为0,而执行验证时_var.aa.amount的值并不是0,但验证器还是使用0来验证。

建议验证器中不要写表达式。

如果表达式的值任何时候都是一样的,这样可是使用表达式,比如

<f:validateLongRange maximum="#{2+5}"/>

<f:validateLongRange maximum="#{session.user.useridlength}"/>

改进

改变表达式的执行时机,默认情况下是在页面加载时由faceslet执行一次,如果改成每次使用时去执行就可以取得真正的表达式的值了。页面上不传表达式,传入表达式的字符串,如下示例

<f:validateLongRange maximum="useridlength"/>

在验证器或转换器中每次调用getUseridlength() 方法。

public int getUseridlength() {
  ValueExpression<Currency> currencyEl = Expressions
    .createValueExpression(currencyEL, Currency.class);
  Currency curCurrency = currencyEl.getValue();
  return curCurrency.getPrecision();
 }

 

通过这种方式可以使得转换器依赖别的字段做转换,比如货币转换时需要依赖货币精度字段选择的值,这时可以将货币精度字段作为表达式字符串专递给转换器。

分享到:
评论

相关推荐

    Struts2的转换器与验证框架

    在处理用户表单提交的数据时,Struts2提供了一套完善的转换器(Converter)和验证(Validation)框架,使得类型转换和数据验证变得更加便捷和高效。 ### 1. Struts2 内置转换器 Struts2 自带了一系列内置转换器,...

    javascript正则表达式表单验证大全

    使用onkeyup和onbeforepaste事件监听器,结合正则表达式,可以实时过滤用户的输入,限制只能输入特定类型的字符,如仅允许中文、英文或数字,有效防止非法输入,提高数据安全性。 以上正则表达式及其应用,覆盖了从...

    正则表达式生成和检验工具

    - **预编译和命名组**:在C#中,可以使用`RegexOptions.Compiled`选项预编译正则表达式以提高速度。`(?模式)`用于创建命名组,便于后续处理。 7. **正则表达式调试** - **跟踪和调试**:某些工具和编程环境支持...

    应用再html、jsp上的自动生成Cron表达式

    在HTML和JSP(JavaServer Pages)这样的前端和后端技术中,使用Cron表达式可以帮助开发者实现定时任务,比如定时发送邮件、更新数据库等。本篇文章将深入探讨如何在HTML和JSP上自动生成Cron表达式以及相关知识点。 ...

    Swing 与正则表达式

    在提供的部分代码示例中,我们看到`JTextField`控件添加了一个监听器来限制用户只能输入数字或小数点。代码如下: ```java JTextField text = new JTextField(); text.addKeyListener(new KeyListener(){ @...

    正则表达式

    如果想在正则表达式中使用特殊的标点符号,必须在它们之前加上一个 "\" . 2.字符类 将单独的直接符放进中括号内就可以组合成字符类.一个字符类和它所包含的任何一个字符都匹配,所以正则表达式 / [abc] / 和字母 ...

    正则表达式的具体介绍.docx

    4. **输入验证**:在Web表单或其他用户界面中,正则表达式经常被用来验证用户输入的数据是否符合特定的格式或规则。比如,验证用户输入的密码是否包含数字、字母和特殊字符等。 5. **文件搜索**:在文件系统中,...

    matlab开发-低压电源转换器

    总的来说,这个项目涉及的MATLAB开发工作是对低压电源转换器的外环控制进行稳定性分析,利用了MUPAD的符号计算能力来实现Lyapunov稳定性理论的计算和验证。这样的工作对于理解和改进电源转换器的性能,特别是在电力...

    正则表达式匹配路由的实现代码

    - 使用自定义转换器实现自定义匹配规则:在@app.route装饰器中使用自定义转换器的名称,后面跟随一个正则表达式,定义期望的路由匹配规则。 - 系统自带转换器:Flask框架提供了一组默认转换器,例如、等,它们用于...

    输入一个字符串表达式,计算其值.rar_字符串表达式_表达式字符串

    因此,需要对输入进行限制和验证,避免执行恶意代码。 以上知识点涵盖了从接收到一个字符串表达式,到计算其值的整个过程。通过理解这些概念,开发者可以创建出能够安全、准确地处理字符串表达式的程序。在实际项目...

    最常用正则表达式集合

    - **解释**: 使用 JavaScript 的事件处理函数 `onkeyup` 和 `onbeforepaste` 来限制用户只能输入中文字符。 - **应用场景**: 在线表单输入、聊天应用等。 ### 23. 仅允许输入全角字符的 JavaScript 方法 - **...

    JSF实战后半部分第20章

    ### JSF实战后半部分第20章:深入解析验证器和转换器 在Java Server Faces(JSF)框架的学习旅程中,我们已探索了组件开发的基础,现在将焦点转向了辅助JSF用户界面的两个关键角色:**验证器(Validator)**和**转换...

    表达式字符串解析求值(V2.0)

    因此,自定义的表达式解析器和求值器通常会进行严格的输入验证和限制,以防止潜在的代码注入攻击。 在实际应用中,这种技术广泛应用于配置文件、命令行接口、动态脚本执行、数据过滤等多种场景。例如,一个软件可能...

    常用正则表达式归纳

    根据提供的文档标题、描述以及部分内文,我们可以总结并扩展出以下有关正则表达式的知识点:...通过上述整理的知识点,初学者可以更加系统地学习和掌握正则表达式的各种常见应用场景,从而提高在实际项目中的开发效率。

    第2章 运算符、表达式与内置对象.pptx

    我们学习了如何使用Python中的内置对象,特别是常量与变量的创建、使用和特性。同时,也了解了Python如何处理数字,包括对整数、浮点数的支持以及数字运算时的类型转换规则。这些基础知识对于理解和编写Python程序至...

    正则表达式,好用

    在网页开发中,正则表达式可以用于数据验证、格式化输入、提取有用信息等多种场景。 #### 描述解读:“辅助开发,” 这句话进一步明确了正则表达式在开发过程中的辅助作用。通过合理运用正则表达式,开发者能够...

    Struts2验证框架的配置及validation.xml常用的验证规则

    在Struts2中,表单验证是一项重要的功能,它确保了用户输入的数据符合预期的格式和范围,从而提高了应用的安全性和用户体验。本文将详细介绍Struts2验证框架的配置方法以及validation.xml文件中常用的验证规则。 ##...

    javascript数字验证脚本

    在创建数字验证脚本时,我们可以使用正则表达式来限制输入格式。例如,如果我们要验证一个整数,可以使用如下正则: ```javascript function isInteger(input) { var regex = /^\d+$/; return regex.test(input);...

Global site tag (gtag.js) - Google Analytics