PrimeFaces Mobile DataList中的CommandLink在筛选后未引用正确的元素
我正在开发PrimFaces移动员工目录应用程序,遇到了一个障碍。这是一个简单的应用程序,由两个屏幕组成:员工筛选/列表+员工详细信息 我能够加载一个没有问题的数据列表。单击commandlink可正确加载员工详细信息。然后,我能够实现一个定制的员工过滤器,这有点痛苦,但我得到了工作。过滤器通过使用过滤结果重新填充员工数据列表的模型来工作 问题是,在我使用过滤器重新填充/过滤数据列表后,单击employee commandlink不会将正确的员工ID传递回模型。而是传递在执行筛选之前存在的员工ID。这就像JSF模型与DOM不匹配一样 我正在使用: 我的脸2.1.7 PrimeFaces Mobile 0.9.3 PrimeFaces 3.3 我的两个支持模型都是@viewscopePrimeFaces Mobile DataList中的CommandLink在筛选后未引用正确的元素,primefaces,Primefaces,我正在开发PrimFaces移动员工目录应用程序,遇到了一个障碍。这是一个简单的应用程序,由两个屏幕组成:员工筛选/列表+员工详细信息 我能够加载一个没有问题的数据列表。单击commandlink可正确加载员工详细信息。然后,我能够实现一个定制的员工过滤器,这有点痛苦,但我得到了工作。过滤器通过使用过滤结果重新填充员工数据列表的模型来工作 问题是,在我使用过滤器重新填充/过滤数据列表后,单击employee commandlink不会将正确的员工ID传递回模型。而是传递在执行筛选之前存在的员工I
<pm:view id="peopleDirView" onload="">
<pm:header title="People Directory" fixed="true">
</pm:header>
<pm:content>
<h:form id="form">
<div data-role="fieldcontain">
<fieldset data-role="controlgroup">
<p:inputText id="searchCriteria" value="#{peopleDirectoryBean.criteria}" type="search"
onkeyup="delay(function() {filterResults();}, 500);" />
</fieldset>
</div>
<p:dataList id="peopleDataList" value="#{peopleDirectoryBean.people}" var="person" rowIndexVar="rowIndex">
<p:column>
<p:commandLink action="#{peopleDirectoryDetailBean.loadPersonDetail(person.employeeId)}" update=":personDetailView">
<img src="/phonedir/people/image/#{person.employeeId}?width=75&height=100" width="90" height="100"
onerror="missingImage(this);" id="per-search-picture" />
<h1>#{person.nameLast}, #{person.nameFirst}</h1>
<p>#{person.deptName}</p>
<p>#{person.jobTitle}</p>
</p:commandLink>
</p:column>
</p:dataList>
<p:remoteCommand name="filterResults" update="peopleDataList" action="#{peopleDirectoryBean.peopleSearch}" />
</h:form>
</pm:content>
<pm:footer fixed="true">
<pm:navBar>
<p:button value="People" icon="home" href="#peopleDirView?reverse=true" styleClass="ui-btn-active" />
<p:button value="Locations" icon="info" href="#locationsView?reverse=true" />
<p:button value="Conference" icon="search" href="#conferenceRoomsView?reverse=true" />
</pm:navBar>
</pm:footer>
<script>
var delay = (function() {
var timer = 0;
return function(callback, ms) {
clearTimeout(timer);
timer = setTimeout(callback, ms);
};
})();
function missingImage(image) {
image.onerror = "";
image.src = "missing-person.jpg";
return true;
}
</script>
</pm:view>
好吧,看来是我错了 在我的支持bean中,我使用javax.inject.Named@Named,因为我试图利用容器的能力进行CDI。一旦我将它改为javax.faces.bean.ManagedBean@ManagedBean,问题就消失了。TomEE文档声明它支持@Named,所以我不确定交易是什么