- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用<f:convertNumber>
标签转换十进制输入。
<f:convertNumber minFractionDigits="2" />
但它接受尾随字母字符。例如,如果我输入 12345.1234AAA
它转换为12345.123
。我希望它抛出一个转换错误,而不是修剪字母字符。我怎样才能实现这个目标?
最佳答案
这就是standard behavior的 java.text.NumberFormat
由 <f:convertNumber>
使用:它会修剪第一个不允许的字符之后的所有条目(例如,除输入区域设置中定义的字母或小数分隔符之外的字母或小数分隔符)。仅当有问题的字符位于开头时,转换才会失败。
我真的不喜欢这种行为,因为用户可能没有注意到他输入错误的值被修剪,从而导致意外且(更糟糕)未被注意到的自动更正为错误的值。
有趣的是,特定的数字转换器的行为有所不同。使用<f:converter converterId="javax.faces.Double" />
不会自动处理非数字输入,而是转换失败。但是,该标记不具有convertNumber 的附加属性,例如minFractionDigits 或货币符号。
另一种方法是编写您自己的自定义转换器,该转换器扩展了标准转换器,如in this answer所述。 。然后,您可以检查字符的值,如果发现任何字符,则直接中止进一步处理(抛出相应的转换异常)。如果该值已经是无字符的,您可以调用派生的转换器的标准行为。
这两种方法的缺点是您失去了convertNumber
的附加功能。 。您没有诸如 minFractionDigits
之类的属性或currencySymbol
上<f:converter>
,所以如果你需要这个,你必须找到另一种方法来传递参数。我们的实现不需要任何这些,所以我没有进一步研究这个(我们采用了方法 A),但是 this answer提出了一种这样做的方法。
关于jsf - :convertNumber doesn't throw conversion error on trailing alphabetic characters in decimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11253368/
在 ADF 中使用 convertNumber 格式化数字。 如果输入值为 10000000 我想要输出 10,000,000 但模式不起作用。 最佳答案 您使用的模式
我正在尝试使用 f:convertNumber 标记。我想使用多种模式。我发现您可以使用日期标签和颜色标签来做到这一点。有没有办法使用 convertNumber 标签来完成此操作,而无需创建自定义标
我想知道如何在我的 JSF 应用程序上设置默认小数点分隔符。我有一些 我需要格式化为货币,保留两位小数。现在默认使用的小数点分隔符是逗号 ,当我对保存进行一些操作时,这给了我一个错误。我不知道我是否可
这是一个例子: 鉴于我有 1.006 美元,这会输出 1.00 美元还是 1.01 美元? 这里不说: http://java.sun.com/javaee/jav
我想在 $12,050,999.00 中显示金额格式。 我试过如下: 但是,它没有以所需的格式显示金额。我收到了 12,050,999相反。 所需的格式如下图所示: 我怎样才能做到这一点
我有一个复合组件,这是其中的一个片段。 如果我想使用 格式化 value3 ,我该怎么做? 最佳答案 在幕后使用标准 java.text.MessageForma
在我的项目中,我使用了很多 h:outputtext 和 f:convertnumber 来将模式应用于我的数字数据。 在其他数据需要时复制和粘贴此模式似乎很容易。但这也是难以管理的;当
我正在使用标签转换十进制输入。 但它接受尾随字母字符。例如,如果我输入 12345.1234AAA它转换为12345.123 。我希望它抛出一个转换错误,而不是修剪字母字符。我怎样才能实现这个目标?
我正在使用 JSF 1.2。我的 IDE 是 RAD。 在我的xhtml页面中,我使用convertNumber标签来格式化整数变量。整数如果不是4位长度,需要用0填充(如果整数值为21,则应显示为0
假设我有以下 格式化货币类型的数字: 在英语中,一百万是 1,000,000,但在德国,它应该是 1.000.000。我的问题是:如果我使用上述模式,JSF 会知道指定语言环境的数字格式并自动使用正
我有一个 h:outputText 字段,用于以特定模式显示金额。 例如。 10000000 需要格式化为 1,00,00,000我用了实现这一目标的标签。我尝试在 locale 属性中添加 hi_I
我是一名优秀的程序员,十分优秀!