jsf - 在 CDI 事件上从 bean 调用 PrimeFaces.current().ajax().update(...) 时出现 NullPointerException
问题描述
我想从 JSF bean 更新组件。
但收到 NullPointerException :
java.lang.NullPointerException
at org.primefaces.PrimeFaces$Ajax.update(PrimeFaces.java:335)
at org.primefaces.PrimeFaces$Ajax.update(PrimeFaces.java:359)
at ir.moke.logmag.view.LogView.start(LogView.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:95)
at [internal classes]
at ir.moke.logmag.api.TestLog.addLog(TestLog.java:20)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.ibm.ws.jaxrs20.cdi.component.JaxRsFactoryImplicitBeanCDICustomizer.serviceInvoke(JaxRsFactoryImplicitBeanCDICustomizer.java:302)
at [internal classes]
这是我的示例代码:
日志视图.java
@SessionScoped
@Named
public class LogView implements Serializable {
private String name;
public void start(@Observes String name) {
this.name = name;
System.out.println("Receive : " + name);
PrimeFaces.current().ajax().update("form:log");
}
public String getName() {
return name;
}
}
测试日志.java
@Path("/log")
public class TestLog {
@Inject
private Event<String> event;
@POST
@Path("/add")
public Response addLog(String name) {
System.out.println("API " + name);
event.fire(name);
return Response.accepted().build();
}
}
HTML
<h:body>
<h:form id="form">
<p:outputLabel value="Output : "/><br/>
<p:outputLabel id="log" value="#{logView.name}"/>
</h:form>
</h:body>
我想从 rest api 发送消息并更新 JSF 页面上的组件。
如何解决这个问题?
我的环境:
Liberty 19.0.0.4
JavaEE 8
JSF 2.3
解决方案
推荐阅读
- javascript - 依赖于 bootstrap.js 的轮播在 vue.js 组件中不起作用
- java - 你如何在 Android 中操作多边形?
- python - 我只有一把钥匙,但需要根据评分提取对象
- javascript - Angular 中的 D3 力模拟
- deconvolution - 在pytorch中使用双线性插值进行反卷积(convTranspose2D)初始化?
- java - 使用 lambda 表达式查找 Recaman 序列的第 n 个值
- xamarin.forms - 在后端服务器请求上启动后台服务
- python - 如何在python列表中的map()中使用lambda if else?
- laravel - Laravel 为嵌套集合添加变量
- python - 递归函数返回无