Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PrimeFaces Mobile DataList中的CommandLink在筛选后未引用正确的元素_Primefaces - Fatal编程技术网

PrimeFaces Mobile DataList中的CommandLink在筛选后未引用正确的元素

PrimeFaces Mobile DataList中的CommandLink在筛选后未引用正确的元素,primefaces,Primefaces,我正在开发PrimFaces移动员工目录应用程序,遇到了一个障碍。这是一个简单的应用程序,由两个屏幕组成:员工筛选/列表+员工详细信息 我能够加载一个没有问题的数据列表。单击commandlink可正确加载员工详细信息。然后,我能够实现一个定制的员工过滤器,这有点痛苦,但我得到了工作。过滤器通过使用过滤结果重新填充员工数据列表的模型来工作 问题是,在我使用过滤器重新填充/过滤数据列表后,单击employee commandlink不会将正确的员工ID传递回模型。而是传递在执行筛选之前存在的员工I

我正在开发PrimFaces移动员工目录应用程序,遇到了一个障碍。这是一个简单的应用程序,由两个屏幕组成:员工筛选/列表+员工详细信息

我能够加载一个没有问题的数据列表。单击commandlink可正确加载员工详细信息。然后,我能够实现一个定制的员工过滤器,这有点痛苦,但我得到了工作。过滤器通过使用过滤结果重新填充员工数据列表的模型来工作

问题是,在我使用过滤器重新填充/过滤数据列表后,单击employee commandlink不会将正确的员工ID传递回模型。而是传递在执行筛选之前存在的员工ID。这就像JSF模型与DOM不匹配一样

我正在使用:

我的脸2.1.7 PrimeFaces Mobile 0.9.3 PrimeFaces 3.3 我的两个支持模型都是@viewscope

<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&amp;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,所以我不确定交易是什么