0

似乎转换器通常有两个方法getAsObject()getAsString(),它们会将 Object 转换为字符串或从字符串转换。

为什么我们需要这样做?

例如,dataTable我们总是可以将对象绑定到var. 为什么我们不能在这里做类似的事情?

4

2 回答 2

4

最后,客户端(通常是浏览器)将收到您通常通过 .xhtml 文件构建的 JSF 组件树的渲染版本。

浏览器不知道BigDecimalsDates例如。如果您在表单的输入字段中写“1.003”,浏览器应该如何知道它在服务器端是Stringafloat还是 a ?BigDecimal它无法知道,也无法处理。因此服务器和浏览器之间的通信总是通过Strings. 当 HTML 被渲染时,该getAsString()方法将被使用。在处理传输的表单输入时,JSF 将使用 将getAsObject()其转换回真实类型。

为什么在数据表中var工作?因为在这里你只会走“一条路”。dataTable 只会显示一些东西,因此toString()可以使用通用方法。在这种情况下,不需要转换为 Object。

于 2013-11-04T08:37:07.147 回答
0

我将为balusc复制并粘贴一个很好的答案,说明为什么我们应该使用 JSF 转换器(我不记得问题本身的链接)

JSF 生成 HTML。HTML 在 Java 术语中基本上是一个大字符串。要在 HTML 中表示 Java 对象,必须将它们转换为字符串。此外,当提交 HTML 表单时,提交的值在 HTTP 请求参数中被视为字符串。在幕后,JSF 从返回字符串中提取它们。要在HttpServletRequest#getParameter()非标准 Java 对象(即不是 EL 具有内置转换的字符串、数字或布尔值)之间进行转换,您必须为您的实体提供自定义转换器class.This Converter 实现了两个方法 getAsString()方法,以便所需的 Java 对象以唯一的字符串表示形式和getAsObject()方法表示,以便可以将 HTTP 请求参数转换回所需的 Java 对象

于 2013-11-04T21:38:19.600 回答