Primefaces 数据表选定的行无法使用 viewscope 工作

2024-01-22

我正在使用 JSF 2.0 和 Primefaces 3.4.2,我有一个使用延迟加载填充的数据表。

当我查看托管bean 的范围时,数据表 selectedRow 给出空指针异常。 如果我使用会话范围,那么我可以在托管bean中获取selectedRow。

我使用 CDI Spring 注释来指定范围。我用过this http://cagataycivici.wordpress.com/2010/02/17/port-jsf-2-0s-viewscope-to-spring-3-0/创建视图范围的方法。

Update 1

我注意到另一件事是当我分页到第二页然后返回第一页时使用视图范围,然后我可以获得 selectedRow。如果我选择一行而不分页,则会出现空指针异常。

JSF Page

<p:dataTable id="dataTable" var="req" lazy="true" value="#{emp.lazyModel}"
                paginator="true" rows="10" 
                             selection="#{emp.selectedRequest}"
                            selectionMode="single">                         
          <p:ajax event="rowSelect" listener="#{emp.onRowSelect}" />  

托管Bean

@Named("emp")
@Scope("view")
public class EmployeesManagedBean implements Serializable {

    @PostConstruct
    public void init() {
        initTable();
    }

    private void initTable() {
        lazyModel = new LazyRequestDataModel(requestList, requestService);
    }

    public LazyDataModel<Employee> getLazyModel() {
        return lazyModel;

    }

我在这一行收到空指针异常onRowSelect method

 Emp emp = (Emp) event.getObject()); 
 System.out.println(emp.getEmpNo() );

完整的错误堆栈跟踪

java.lang.NullPointerException
    at net.test.managed.bean.RequestManagedBean.onRowSelect(RequestManagedBean.java:134)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.sun.el.parser.AstValue.invoke(AstValue.java:187)
    at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
    at org.primefaces.component.behavior.ajax.AjaxBehaviorListenerImpl.processAjaxBehavior(AjaxBehaviorListenerImpl.java:52)
    at org.primefaces.event.SelectEvent.processListener(SelectEvent.java:40)
    at javax.faces.component.behavior.BehaviorBase.broadcast(BehaviorBase.java:106)
    at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:760)
    at javax.faces.component.UIData.broadcast(UIData.java:1071)
    at javax.faces.component.UIData.broadcast(UIData.java:1093)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3730)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)

我已经设法通过使用解决了这个问题@ViewAccessScopedCDI 支持。在maven中添加依赖或者直接下载http://myfaces.apache.org/extensions/cdi/download.html http://myfaces.apache.org/extensions/cdi/download.html并将其放入类路径中。

<dependency>
    <groupId>org.apache.myfaces.extensions.cdi.core</groupId>
    <artifactId>myfaces-extcdi-core-api</artifactId>
    <version>1.0.5</version>
    <scope>compile</scope>
</dependency>

仍然存在一个小问题,即当第一次部署应用程序时,我仍然没有获得选定的行值,对于后续选择,我能够获得选定的行值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Primefaces 数据表选定的行无法使用 viewscope 工作 的相关文章

随机推荐

  • Excel VBA查询外部.aspx页面并检索数据

    我已经为此苦苦挣扎了大约一天 基本上 我想编写一个 Excel 宏来循环遍历 Excel 中的列表 查询网页并检索一些数据 理想情况下 我只想检索所需的数据 以便将其放置在相邻的单元格中 但此时我会尽一切努力 页面是ASP net 我没有经
  • 有没有 XSLT 处理命令行工具? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想通过 XSLT 文件和 XSLT 处理工具将 XML 文件更改为修改后的 XML 文件 例如 xs
  • 在 Objective C 中通过 POST 上传图像

    我目前正在通过 HTTP Post 将图像上传到服务器 但似乎无法找到构建调用该服务的 url 的方法 用户从库或相机中选择图像 然后调用执行插入语句的 json 服务 该服务需要以下 uritemplate DataTransfer Se
  • 使用 setup.py 自定义 python 包目录布局

    假设我有以下目录结构 src python generated init py a py lib init py b py 我的是什么setup py需要看起来像这样才能创建目录布局如下的 dist src python init py a
  • 使用任务并行库时如何处理所有未处理的异常?

    我正在使用 TPL 任务并行库 http msdn microsoft com en us library dd460717 28v VS 100 29 aspx 在 NET 4 0中 我想通过使用集中所有未处理异常的处理逻辑Thread
  • 在 pandas 数据框中映射值的范围[重复]

    这个问题在这里已经有答案了 如果之前有人问过这个问题 我深表歉意 但我广泛查看后没有结果 import pandas as pd import numpy as np df pd DataFrame data np random randi
  • Javascript 对 dom 的更改在按下后退按钮时丢失

    我有这个视图可以更改 div 内的文本 然后 用户可以单击链接跳转到另一个页面 但是当用户按下 后退 按钮时 所有 DOM 更改都会丢失 FF 会记住更改后的 div 文本 但 Chrome 和 IE 不会 我发现了类似的问题 但就我而言
  • CakePHP 3 上未找到“Locale”类问题

    我刚刚下载了文件这个链接 http bakery cakephp org articles lorenzo 2014 09 28 cakephp 3 0 0 beta2 released 提取并尝试执行 但出现此错误 Fatal error
  • 获得黑暗的外观和感觉? [复制]

    这个问题在这里已经有答案了 我厌倦了 Swing 的标准外观和感觉 需要一些看起来很酷的深色和黑色主题 作为秋千一部分的 DefaultMetal Ocean Motif 或 Windows 都不能满足我的需求 正在使用漂亮的图形用户界面
  • 如何在Eclipse中指定C++系统包含路径?

    GCC 有选项 isystem 将目录视为系统目录 这样就不会为这些目录生成编译警告 但是我在 Eclipse 中找不到类似的设置 我使用的是 Mars 2 Release 4 5 2 已尝试在 项目属性 C C 常规 预处理器包含路径 宏
  • 何时在数据库表之间使用一对一关系?

    一个数据库设计问题 你什么时候决定使用1对1关系表 我看到这种情况的地方之一是 例如 当您有一个 User 和 UserProfile 表时 人们会将它们分开 而不是将所有列都放在 User 表中 从技术上讲 您可以将所有列放在一个表中 因
  • Python ReportLab 使用 splitfirst/splitlast

    我正在尝试使用 Python 和 ReportLab 2 2 来创建 PDF 报告 根据用户指南 http www reportlab com docs userguide pdf 特殊 TableStyle 索引 原文如此 在任何样式命令
  • 在 purrr 的 map() 函数中使用 levene_test 吗?

    有没有办法通过进行 Levene 测试map 函数从purrr包裹 或者是否有另一种简单的方法来计算各种变量的 Levene 检验 我的数据框包含各种因子和数字列 所以我尝试使用map if 效果很好 例如 对于夏皮罗检验 但是 我不知道如
  • 在 Delphi 程序中托管 .NET 运行时

    我正在考虑在 Delphi 程序中使用一些 NET 代码 我需要使用 net 程序集和预定义函数使我的程序可扩展 我已经支持常规 DLL 经过网上大量搜索 我发现托管VCL http www managed vcl com 但我还没有准备好
  • 如何在 Xcode 8 上恢复之前的提交?

    假设我有 5 个本地提交 commit 1 commit 2 commit 3 commit 4 commit 5 当我工作的时候 我想回去提交2 我该怎么做呢 在以前版本的 Xcode 中使用快照非常容易 放弃更改 只会返回到提交 5 对
  • 如何从R中的Lasso回归获得系数?

    有人可以告诉我如何获取包中套索回归的系数lars in R 例如 如果代码如下 test lasso lars A B 谢谢 First get cross validation score test lasso cv cv lars A
  • 具有自定义颜色比例条的热图,用于低于和高于阈值的值

    我想在 R 中使用 pheatmap 制作一个热图 颜色为绿色 黑色和红色 并使用图例中的范围从 2 到 2 这是我使用的代码 library pheatmap my palette lt colorRampPalette c green
  • 如何在 C++ 中从向量中链接删除对?

    我有这个文本文件 我将每一行读入std vector
  • FireFox 3.5 重复获取图像精灵 - 如何防止?

    编辑 Mozilla 修复了该错误 该线程已死 编辑 这是一个 Mozilla 错误 请参阅此线程 https bugzilla mozilla org show bug cgi id 501853 https bugzilla mozil
  • Primefaces 数据表选定的行无法使用 viewscope 工作

    我正在使用 JSF 2 0 和 Primefaces 3 4 2 我有一个使用延迟加载填充的数据表 当我查看托管bean 的范围时 数据表 selectedRow 给出空指针异常 如果我使用会话范围 那么我可以在托管bean中获取selec