【问题标题】:primefaces autocomplete works fine outside datatable but not working inside itprimefaces 自动完成功能在数据表之外工作正常,但在其中不工作
【发布时间】:2013-04-24 12:08:16
【问题描述】:

我在下面有这个自动完成组件,它可以在数据表之外工作,但它不能在其中工作

我看不出原因:

  <p:dataTable id="table" var="car" editable="true" editMode="cell"
                            widgetVar="carsTable" rowKey="#{car.idarticleFourniseur}"
                            value="#{articlesMB.listarticlefournisseurs}" rows="3">

                            <p:ajax event="cellEdit" listener="#{articlesMB.onCellEdit}"
                                update=":messages" />

                            <p:column headerText="Id">
                                <h:outputText value="#{car.idarticleFourniseur}" />
                            </p:column>

                            <p:column headerText="Nom">
                                <h:outputText value="#{car.libelle}" />
                            </p:column>

                            <p:column headerText="Fournisseur">
                                <p:cellEditor>
                                    <f:facet name="output">
                                        <h:outputText value="#{car.fournisseur.personne.nom}" />
                                    </f:facet>
                                    <f:facet name="input">
                                        <p:autoComplete id="dfdd" var="p" itemLabel="#{p.personne.nom}"
                                            itemValue="#{p}" dropdown="true" process="@this"
                                            value="#{articlesMB.selectedFournisseur}"
                                            forceSelection="true" converter="#{fournisseursConverter}"
                                            completeMethod="#{articlesMB.complete}">
                                            <p:column>  
                                                 #{p.personne.nom} - #{p.personne.prenom}  
                                              </p:column>
                                        </p:autoComplete>

                                    </f:facet>
                                </p:cellEditor>
                            </p:column>

                        </p:dataTable>

                        <p:autoComplete id="dfd" var="p" itemLabel="#{p.personne.nom}"
                            itemValue="#{p}" dropdown="true" process="@this"
                            value="#{articlesMB.selectedFournisseur}" forceSelection="true"
                            converter="#{fournisseursConverter}"
                            completeMethod="#{articlesMB.complete}">
                            <p:column>  
                                                 #{p.personne.nom} - #{p.personne.prenom}  
                                              </p:column>
                        </p:autoComplete>

第二个自动完成工作正常,但第一个(在数据表中)不起作用(完成不出现)

你有什么想法

提前谢谢你

【问题讨论】:

  • 把自动完成放在一个方面对我来说有点奇怪。您是否尝试删除它周围的刻面?
  • 另外:也许这个来自 BalusC 的 answer 有帮助。将面中的所有内容放在面板中
  • 不幸的是,h:panelgroup 什么都不做,当我删除这个方面时,我看到了这个错误:java.lang.NullPointerException at org.primefaces.component.celleditor.CellEditorRenderer.encodeEnd(CellEditorRenderer.java:43)
  • 注:完成的方法被调用,但没有出现元素列表
  • 这是个问题吗? :) 不,我没有。我需要一个例子来重现这个。然后我/一个人可以尝试调试它并查看它挂在哪里。如果调用了完成方法,我猜该请求也会返回给浏览器。您是否使用浏览器开发工具(例如 firebug)检查了请求返回的内容?也许请求被正确返回了,但是当应该显示自动完成框时,DOM 中存在可见性问题。

标签: jsf-2 process autocomplete primefaces datatable


【解决方案1】:

你可以使用 inplace 代替 celleditor

<p:inplace editor="true" label="#{contactRole.userDto.fullContactData}" emptyLabel="#{msgs['constructionSite.text.contact']}">
                                    <p:autoComplete value="#{contactRole.userDto}" 
                                        id="contact1" completeMethod="#{assignContactBean.completeContacts}"  
                                        var="c" itemLabel="#{c.fullContactData}" itemValue="#{c}"
                                        converter="#{assignContactBean}" forceSelection="true" scrollHeight="200"/>
                            </p:inplace>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-12
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    相关资源
    最近更新 更多