jsf中转换器的用途是什么?
转换器通常有两个方法,分别是jsf中转换器的用途是什么?,jsf,converter,Jsf,Converter,转换器通常有两个方法,分别是getAsObject()和getAsString(),它们将对象转换成字符串或从字符串转换成字符串 我们为什么要这样做 例如,在dataTable中,我们总是可以使用var绑定对象。为什么我们不能在这里做类似的事情呢?最后,客户端(通常是浏览器)将收到JSF组件树的呈现版本,您通常通过.xhtml文件构建该组件树 例如,浏览器不知道大小数或日期。如果在表单的输入字段中写入“1.003”,浏览器如何知道它是服务器端的字符串,还是浮点或大十进制?它不可能知道这一点,也无
getAsObject()
和getAsString()
,它们将对象转换成字符串或从字符串转换成字符串
我们为什么要这样做
例如,在dataTable
中,我们总是可以使用var
绑定对象。为什么我们不能在这里做类似的事情呢?最后,客户端(通常是浏览器)将收到JSF组件树的呈现版本,您通常通过.xhtml文件构建该组件树
例如,浏览器不知道大小数
或日期
。如果在表单的输入字段中写入“1.003”,浏览器如何知道它是服务器端的字符串
,还是浮点
或大十进制
?它不可能知道这一点,也无法处理这一点。因此,服务器和浏览器之间的通信总是通过字符串进行的。呈现HTML时,将使用getAsString()
方法。在处理传输的表单输入时,JSF将使用getAsObject()
将其转换回实际类型
为什么var
在数据表中工作?因为在这里你只能走“单程”。dataTable将只显示某些内容,因此可以使用泛型的toString()
方法。在这种情况下,不需要对对象进行转换。最终,客户端(通常是浏览器)将收到JSF组件树的呈现版本,您通常通过.xhtml文件构建该组件树
例如,浏览器不知道大小数
或日期
。如果在表单的输入字段中写入“1.003”,浏览器如何知道它是服务器端的字符串
,还是浮点
或大十进制
?它不可能知道这一点,也无法处理这一点。因此,服务器和浏览器之间的通信总是通过字符串进行的。呈现HTML时,将使用getAsString()
方法。在处理传输的表单输入时,JSF将使用getAsObject()
将其转换回实际类型
为什么var
在数据表中工作?因为在这里你只能走“单程”。dataTable将只显示某些内容,因此可以使用泛型的toString()
方法。在这种情况下,不需要对对象进行转换。我将复制并粘贴一个关于为什么我们应该使用JSF转换器的好答案(我不记得问题本身的链接)
JSF生成HTML。HTML在Java术语中基本上是一个大字符串。要在HTML中表示Java对象,必须将它们转换为字符串。此外,当提交HTML表单时,提交的值在HTTP请求参数中被视为字符串。在封面下,JSF从HttpServletRequest#getParameter()
中提取它们,该函数返回String.To在非标准Java对象(即不是EL内置转换的字符串、数字或布尔值)之间转换
您必须为实体类提供自定义转换器。此转换器实现两个方法getAsString()
method,以便所需的Java对象以唯一的字符串表示和getAsObject()表示
方法,以便将HTTP请求参数转换回所需的Java对象我将复制并粘贴一个关于为什么要使用JSF转换器的好答案(我不记得问题本身的链接)
JSF生成HTML。HTML在Java术语中基本上是一个大字符串。要在HTML中表示Java对象,必须将它们转换为字符串。此外,当提交HTML表单时,提交的值在HTTP请求参数中被视为字符串。在封面下,JSF从HttpServletRequest#getParameter()
中提取它们,该函数返回String.To在非标准Java对象(即不是EL内置转换的字符串、数字或布尔值)之间转换
您必须为实体类提供自定义转换器。此转换器实现两种方法getAsString()
方法,以便以唯一的字符串表示形式表示所需的Java对象;以及getAsObject()
方法,以便将HTTP请求参数转换回所需的Java对象