Jsf 为什么我的f:selectItems不需要自定义转换器?

Jsf 为什么我的f:selectItems不需要自定义转换器?,jsf,jsf-2,Jsf,Jsf 2,我用Java(NetBeans 8.2)开发了一个企业应用程序,它有两个EJB模块和一个基于JSF2.2的web应用程序。该应用程序在我的NetBeans版本中工作,但当我在另一台pc上传输此应用程序并将其部署到那里时,它会显示一些错误。 问题所在的位置如下所示: <h:selectManyListbox class = "selectManyListBox" id="parkiralista" value="#{pregled.odabranaParkir

我用Java(NetBeans 8.2)开发了一个企业应用程序,它有两个EJB模块和一个基于JSF2.2的web应用程序。该应用程序在我的NetBeans版本中工作,但当我在另一台pc上传输此应用程序并将其部署到那里时,它会显示一些错误。 问题所在的位置如下所示:

                <h:selectManyListbox class = "selectManyListBox" id="parkiralista" value="#{pregled.odabranaParkiralista}" >
                    <f:ajax event="valueChange" execute="@this" render="" />
                    <f:selectItems value="#{pregled.popisParkiralista}"
                                   var="p"
                                   itemLabel="#{p.adresa.concat('; ').concat(p.naziv).concat('; ').concat(p.id.toString())}"
                                   itemValue="#{p}"/>
                </h:selectManyListbox>

所以这个
itemValue=“#{p}”/>
是Parkiralista类型的对象,我没有任何自定义转换器将其转换回object。即使我没有自定义转换器,这也可以在我的电脑上运行。但当我在另一台pc上传输应用程序并将其部署到那里时,它不起作用,NetBeans显示此错误:
java.lang.String无法转换为org.foi.nwtis.ivicelig.ejb.eb.Parkiralista
。所以我的问题是,为什么这在我的第一台电脑上有效,而不是在我的第二台电脑上。新版本的JSF支持带对象和不带转换器的itemLabel吗? 谢谢

新版本的JSF支持带对象和不带转换器的itemLabel吗

没错。自JSF2.3以来,绑定到
列表的
组件不需要显式转换器。这是作为规范的一部分实现的

显然,您实际上是在一个环境中运行JavaEE8/JSF2.3,在另一个环境中运行JavaEE7/JSF2.2。这不是开发应用程序的好方法。在所有开发环境中,您都应该按照预期的最低支持版本进行开发

新版本的JSF支持带对象和不带转换器的itemLabel吗

没错。自JSF2.3以来,绑定到
列表的
组件不需要显式转换器。这是作为规范的一部分实现的


显然,您实际上是在一个环境中运行JavaEE8/JSF2.3,在另一个环境中运行JavaEE7/JSF2.2。这不是开发应用程序的好方法。在所有开发环境中,您都应该按照预期的最低支持版本进行开发。

您确定它可以在一台PC上运行吗?当您选择项目时,您的列表odabranaParkiralista是否真的在没有转换器的情况下得到更新?。itemValue=“#{p}”是definiteley unneccessary,因为这是默认的itemValue。您确定它可以在一台电脑上工作吗?当您选择项目时,您的列表odabranaParkiralista是否真的在没有转换器的情况下得到更新?。itemValue=“#{p}”是definiteley unneccessary,因为这是默认的itemValue。