繁体   English   中英

JSF浮点转换

[英]JSF Float Conversion

我在这里的项目中使用了JSF 1.2和IceFaces 1.8。

我有一个页面,它基本上是一大堆浮点数字段的大编辑网格。 这是通过页面上的inputText字段实现的,该字段指向具有原始float类型的值对象

现在,由于新要求看到某些字段可以为空,我想更改value对象以使用Float对象而不是基本类型。 我不认为我需要对页面做任何事情以适应这个。

但是,当我进行更改时,我收到以下错误:

/pages/page.xhtml @ 79,14 value =“#{row.targetValue}”:java.lang.IllegalArgumentException:参数类型不匹配

/pages/page.xhtml @ 79,14 value =“#{row.targetValue}”:java.lang.IllegalArgumentException:java.lang.ClassCastException@1449aa1

该页面如下所示:

<ice:inputText value="#{row.targetValue}" size="4">
  <f:convertNumber pattern="###.#" />
</ice:inputText>

我也尝试在那里添加<f:convert convertId="javax.faces.Float" /> ,但这似乎也不起作用! 也没有将值对象类型更改为Double

我敢肯定我可能错过了一些非常简单的东西,但我现在已经盯着这一段时间了,没有答案立即显而易见!

经过一些调查(参见此处此处此处 ), <f:convertNumber>是问题所在。 它转换为的数字似乎取决于您给出的输入 - 它可以是整数或浮点数。 换句话说,它不会查看目标类型 - 它只是生成java.lang.Number的实例。 这不是理想的,虽然我无法确定这是因为我正在使用旧版本的JSF或EL或类似的东西。

似乎有三种解决方案:

  1. 使用java.lang.Number作为您的值对象类型;
  2. 编写自己的转换器;
  3. 不要使用<f:convertNumber>

不幸的是,由于其他原因,#1不适合我,我现在不想编写自己的转换器。 但是,如果我更改代码以删除convertNumber,一切似乎都正常。 (我还将值对象类型更新为Double ,这是我在其中一个链接中建议的)。

这可以防止异常,看起来JSF仍然在做我想做的事情。 只是烦恼,似乎你不能在同一个实例中指定convertNumber和转换类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM