Java PrimeFaces不';设置转换器属性时打开对话框

Java PrimeFaces不';设置转换器属性时打开对话框,java,jsf,primefaces,dialog,converter,Java,Jsf,Primefaces,Dialog,Converter,我有一个页面,通过p:commandButton打开一个对话框。当没有为p:pickList设置转换器属性时,一切都很好,但是当设置为p:pickList时,对话框拒绝打开 以下是xhtml(仅限相关部分): 我不明白为什么它不能与转换器一起工作,而转换器在另一个页面中做了它应该做的事情。在我使用PF的经验中,我总是将我的变量称为与getter和setter相同的变量,否则我会遇到很多问题 在您的XML中 converter="#{eventBean.personConverter}" 我可能

我有一个页面,通过p:commandButton打开一个对话框。当没有为p:pickList设置转换器属性时,一切都很好,但是当设置为p:pickList时,对话框拒绝打开

以下是xhtml(仅限相关部分):


我不明白为什么它不能与转换器一起工作,而转换器在另一个页面中做了它应该做的事情。

在我使用PF的经验中,我总是将我的变量称为与getter和setter相同的变量,否则我会遇到很多问题

在您的XML中

converter="#{eventBean.personConverter}"
我可能错了,但我相信它会在getter中查找变量
personConverter


但是在bean中,您只需调用变量
转换器
。尝试将其重命名为
personConverter

奇怪,我从未遇到过这样的问题。我尝试重命名变量,但没有成功。谢谢你的努力。不要像现在这样自己管理转换器(调用
new
等等)。适当地定义独立转换器和参考。2.查看javascript控制台。如果网页上缺少任何转换错误,它将出现在控制台中。我假设是单机版,您的意思是将其定义为@FacesConverter,并且每次加载列表对我来说都是糟糕的设计,是不是?我不知道你所说的javascript控制台是什么意思,但是除了pickList之外,转换器工作得很好。你是对的,你不应该每次都实例化一个列表。最佳实践是通过DAO将列表注入转换器。Javascript控制台是指浏览器中的开发者控制台。大多数现代浏览器都在“开发者工具”菜单下提供此功能。
@ManagedBean
@ViewScoped
public class EventBean {

    public EventBean() {    
        converter = new PersonConverter(#list of persons);
    }

    public PersonConverter getPersonConverter() {
        return converter;
    }
}
converter="#{eventBean.personConverter}"