1

我观察到一个相当奇怪的行为,我似乎无法找到解释。以下结构呈现足球比赛的阵容条目列表:

<h:head/>
<h:body>
<ui:composition xmlns:teams="http://java.sun.com/jsf/composite/teams">
  <h:panelGroup id="layerFragment">
    <ui:fragment rendered="#{abean.showLayer}">
        <ui:repeat var="e" value="#{abean.bbean.entries}" varStatus="status">
        <tr>
            <td><h:outputText value="#{status.index+1}" />.</td>
            <td>
                 <h:selectOneMenu id="position" value="#{e.position}"                 
                    converter="PositionConverter">
                      <f:selectItems value="#{abean.positions}" />
                 </h:selectOneMenu>
            </td>
            <td>
                <h:outputLabel class="inv" for="name" value="#{e.player}" />
                <p:autoComplete id="name" value="#{e.spieler}" 
                   completeMethod="#{abean.completePlayer}" var="s1" 
                   itemLabel="#{s1.name}" itemValue="#{s1}"         
                    converter="SpielerConverter">
                    <p:ajax event="itemSelect" 
                         listener="#{abean.playerCompleted}" update="position"/> 
                </p:autoComplete>
            </td>                                                       
        </tr>
        </ui:repeat>
        ...

如您所见,它包含一个自动完成字段和每行一个下拉菜单,但总的来说它完全是普通的。现在我将它嵌入到一个组件中,该组件是从命令链接覆盖的。当我单击它时,将显示叠加层并呈现阵容。

这可以从阵容列表中调用,被覆盖和渲染。所有这些都工作正常。除了 p:autocomplete 得到第一个条目错误的事实之外!我仔细检查过,重复得到了正确的值。但是, p:autocomplete 似乎只保留了前一次运行的第一行。它也总是在同一行。

我搞不清楚了。有人知道这里发生了什么吗?我正在使用 Primefaces 3.5 顺便说一句。

编辑:这是层次结构中它上面的组件。弹出窗口在 layer.xhtml 中定义。leftcolumn.xhtml 中的阵容列表。

<?xml version="1.0" encoding="UTF-8" ?>
<ui:composition template="/admin/template/master_layout.xhtml"
xmlns="http://www.w3.org/1999/xhtml" 
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">

<ui:param name="viewName" value="ticker" />
<ui:define name="windowTitle">Tickern</ui:define>

<ui:define name="leftcolumn">
    <ui:include src="/fussball/leftcolumn.xhtml" />
</ui:define>

<ui:define name="breadcrumb">
    <ui:include src="/fussball/breadcrumb.xhtml" />
</ui:define>

<ui:define name="content">
    <ui:include src="/fussball/ticker.xhtml" />
</ui:define>

<ui:define name="layer">
    <ui:include src="/fussball/layer.xhtml" />
</ui:define>

</ui:composition>
4

0 回答 0