Jsf <;p:自动完成>;内部<;ui:重复>;保留旧数据
我观察到一种相当奇怪的行为,似乎找不到解释。以下结构呈现足球比赛的排队条目列表:Jsf <;p:自动完成>;内部<;ui:重复>;保留旧数据,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我观察到一种相当奇怪的行为,似乎找不到解释。以下结构呈现足球比赛的排队条目列表: <h:head/> <h:body> <ui:composition xmlns:teams="http://java.sun.com/jsf/composite/teams"> <h:panelGroup id="layerFragment"> <ui:fragment rendered="#{abean.showLayer}">
<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 btw
编辑:这是层次结构中位于其上方的组件。弹出窗口在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>
股票
关键可能是您在这里没有展示的部分,即如何更新自动完成。您所说的“更新自动完成”到底是什么意思?我的意思是,恐怕JSF部分更新我仍然没有遵循。这个问题从一开始就出现了。似乎自动完成的值绑定是错误的。更重要的是:我发现,只有当有多个队列可供选择时,问题才会出现(这意味着,作为包含自动完成的弹出窗口的占位符的片段可以由不同队列的内容填充)。如果只有一个选择,那么一切都很好。但话说回来,这并不奇怪。这可能与p:autocomplete的ID有关吗?我继续给每个p:autocomplete一个唯一的ID。没有雪茄。