【问题标题】:PrimeFaces doesn't open dialog when converter attribute is set设置转换器属性时 PrimeFaces 不会打开对话框
【发布时间】:2014-03-07 14:52:53
【问题描述】:

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

这里是 xhtml(仅相关部分):

<p:dialog id="dialog" widgetVar="eventDialog" resizable="false" header="Event">

    <h:form>

        <p:panelGrid id="eventPanel" columns="2"> 

            <h:outputLabel value="Participants" />

            <p:pickList id="participants" value="#{eventBean.dualList}" var="person" 
                itemValue="{person}" showCheckbox="true" 
                converter="#{eventBean.personConverter}" showSourceFilter="true"     
                showTargetFilter="true" filterMatchMode="contains" 
                itemLabel="#{person.name}, #{person.forename}"  />

            <f:facet name="sourceCaption">Personen</f:facet>  
            <f:facet name="targetCaption">Participant</f:facet>  


            <p:commandButton value="Save" icon="ui-icon-disk"
                action="#{eventBean.saveEvent()}" onsuccess="eventDialog.hide()" 
                update="@all" ajax="false" />

        </p:panelGrid>  

    </h:form>

</p:dialog>

<h:form id="eventForm">

    <p:commandButton value="Create Event" action="#{eventBean.createEvent()}"     
        oncomplete="eventDialog.show()" update=":dialog" styleClass="spaceBottom2" />

</h:form>

和 bean EventBean(仅相关部分):

@ManagedBean
@ViewScoped
public class EventBean {

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

    public PersonConverter getPersonConverter() {
        return converter;
    }
}

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

【问题讨论】:

  • 1.不要像现在一样尝试自己管理转换器(调用new 等)。适当地定义一个独立的转换器和引用。 2. 查看您的 javascript 控制台。如果网页上缺少任何转换错误,它会在控制台中
  • 我假设独立您的意思是将其定义为 @FacesConverter 并且每次加载列表对我来说似乎都是糟糕的设计,或者不是吗?我不知道您所说的 javascript 控制台是什么意思,但除了 pickList 之外,转换器工作正常。
  • 你是对的,你不应该每次都实例化一个列表。最佳实践是通过 DAO 将列表注入转换器。 Javascript 控制台是指浏览器中的开发者控制台。大多数现代浏览器都在“开发者工具”菜单下提供此功能。

标签: java jsf primefaces dialog converter


【解决方案1】:

根据我使用 PF 的经验,我总是将变量称为 getter 和 setter,否则会遇到很多问题。

在你的 XML 中有

converter="#{eventBean.personConverter}"

我可能错了,但我相信它会查找变量 personConverter 的 getter。

但在您的 bean 中,您只需调用变量converter。尝试将其重命名为personConverter

【讨论】:

  • 奇怪,我从来没有遇到过这样的问题。我尝试重命名变量,但没有成功。不过感谢您的努力。
猜你喜欢
  • 1970-01-01
  • 2013-04-19
  • 2015-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-10
  • 1970-01-01
相关资源
最近更新 更多