我升级了我的Java EE Web应用程序以使用更新的PrimeFaces版本,突然在PrimeFaces commandlink的action属性中调用重载的bean方法不再起作用.我试图使用JSF默认的commandlink来测试它,这个也没用.
方法签名如下:
public void updateA(B b);
public void updateA(A a);
Run Code Online (Sandbox Code Playgroud)
它总是试图将A转换为B.
更好奇的是,它在升级之前如何运作?
条件运算符适用于许多属性,如"已渲染","值"等.
但它不起作用?或者我做错了吗?
<h:commandLink action="#{true ? bean.methodTrue() : bean.methodFalse()}"/>
Run Code Online (Sandbox Code Playgroud)
错误:javax.el.ELException:不是有效的方法表达式
(我用primefaces ajax action属性实现了它)
我有一个模板,在其定义中我使用了几个表单和按钮.
问题是定义(定义)xhtml文件不知道组件层次结构.
例如,我想在同一个定义文件中以不同的形式更新元素"table2".
模板插入:
<p:tabView id="nav"> <!-- nav -->
<ui:insert name="content_nav">content navigation</ui:insert>
</p:tabView>
Run Code Online (Sandbox Code Playgroud)
定义我的层次结构"nav"的第一级
模板定义:
<ui:define name="content_nav">
<h:form id="form1"> <!-- nav:form1 -->
<h:dataTable id="table1"/> <!-- nav:form1:table1 -->
<p:inputText value="#{bean.value}"/>
<p:commandButton action="..." update="nav:form2:table2"/>
</h:form>
<h:form id="form2">
<h:dataTable id="table2"/> <!-- nav:form2:table2 -->
<!-- other elements -->
</h:form>
</ui:define>
Run Code Online (Sandbox Code Playgroud)
在我的定义部分,我不想知道"导航"!
我怎样才能做到这一点?或者如何向上移动一个命名组件?或者将最高父完整ID保存在变量中?
有时我看到类似的东西:
update=":table2"
Run Code Online (Sandbox Code Playgroud)
但是我找不到任何关于这个的信息?,JavaEE 6文档只是提到@关键字.
这些的执行顺序是什么?
这是一个关于可能的f:event
事件名称的问题:JSF 2事件列表?
preRenderComponent
preRenderView
postAddToView
preValidate
postValidate
Run Code Online (Sandbox Code Playgroud)
我想检查用户是否保存在会话bean中,如果没有重定向到登录站点,这需要在view-param转换阶段之前发生,因为使用的转换器依赖于登录的用户.'preValidate'似乎是在转换后发生的,因此我需要更早的事件.
<f:event type="preRenderView" listener="#{beanA.checkLoggedIn()}"/>
<f:viewParam name="param" value="#{beanB.param}" converter="#{beanB.converter}" required="true"/>
Run Code Online (Sandbox Code Playgroud)
我也可以在'beanB'中加入'checkLoggedIn()',但是试图使用一个单独的请求范围的bean来进行检查,以便我可以轻松地重用它.
如何在过滤器中检索FacesContext?
我跟着就如何检索下面的文章FacesContext
中Filter
:
http://ocpsoft.org/java/jsf-java/jsf-20-extension-development-accessing-facescontext-in-a-filter/
但问题是它无法使用Flash作用域.关注NPE:
java.lang.NullPointerException
at com.sun.faces.context.flash.ELFlash.loggingGetPhaseMapForWriting(ELFlash.java:751)
at com.sun.faces.context.flash.ELFlash.getPhaseMapForWriting(ELFlash.java:785)
at com.sun.faces.context.flash.ELFlash.put(ELFlash.java:392)
at com.sun.faces.context.flash.ELFlash.put(ELFlash.java:112)
Run Code Online (Sandbox Code Playgroud)
我想在我的过滤器中添加重定向并使用闪存范围来保存一些数据以及消息,这是无效的.
我如何有条件地渲染<ui:define>
?
模板中的数据取决于所需的数据<f:viewParam>
.
但是如果提供了无效的视图参数,那么<ui:define>
不应该渲染,因为应该使用模板的默认内容.
我尝试过使用<c:if>
但不起作用.
我有关于基于warp的并行缩减的想法,因为warp的所有线程都是按照定义同步的.
因此,我们的想法是输入数据可以减少64倍(每个线程减少两个元素),而不需要任何同步.
与Mark Harris的原始实现相同,减少应用于块级别,数据应用于共享内存. http://gpgpu.org/static/sc2007/SC07_CUDA_5_Optimization_Harris.pdf
我创建了一个内核来测试他的版本和基于warp的版本.
内核本身完全相同地将BLOCK_SIZE元素存储在共享内存中,并将其结果输出到输出数组中的唯一块索引.
算法本身工作正常.测试完整的一个数组以测试"计数".
实现的功能体:
/**
* Performs a parallel reduction with operator add
* on the given array and writes the result with the thread 0
* to the given target value
*
* @param inValues T* Input float array, length must be a multiple of 2 and equal to blockDim.x
* @param targetValue float
*/
__device__ void reductionAddBlockThread_f(float* inValues,
float &outTargetVar)
{
// code of the below functions
}
Run Code Online (Sandbox Code Playgroud)
1.执行他的版本:
if (blockDim.x >= 1024 …
Run Code Online (Sandbox Code Playgroud) 是否有一个BigDecimal库,其中包含允许空值的BigDecimal基本操作?
出于数学目的,Null应被视为0.
我不想对可能的空值进行所有空值检查.
您永远不会在数据库,应用程序或视图中允许空值并初始化所有内容new BigDecimal(0)
或对可空值的每次使用执行空值检查.
就像是:
public static BigDecimal add(final BigDecimal value, final BigDecimal augend)
{
if (value == null)
return augend;
else if (augend == null)
return value;
else
return value.add(augend);
}
public static BigDecimal multiply(final BigDecimal value, final BigDecimal multiplicand)
{
if (value == null || multiplicand == null)
return null;
return value.multiply(multiplicand);
}
Run Code Online (Sandbox Code Playgroud) 我有一个jsf视图,它显示了一个远程检索的表中的托管bean(viewscope)的一些数据.
目前,使用primefaces poll组件通过客户端视图轮询更新数据.
这还不够,因为要向客户端发送大量流量,现在Primefaces支持服务器推送我只想重新加载数据并在数据发生变化时将其推送到客户端视图.
这应该通过从Web层到应用层的轮询来实现,调用类似的方法hasChanged(...)
.如果数据已更改,则Web层会将通知推送到客户端以重新加载数据.
当前的客户投票
客户端>> web-tier >> app-tier
客户端通过ajax向web层询问数据,该数据再次向app-tier请求数据和更新视图
希望网络层轮询和推送
客户端<< web-tier >> app-tier
如果数据已更改并代表重新加载并通知(推送)客户端更新视图,则web-tier轮询应用层
处理办法:
在Web层中实现托管bean轮询的最佳方法是什么?
编辑:
架构:(3层)
使用单例类和应用程序范围的托管bean来保存应用程序数据有区别吗?
我需要查找某些JNDI资源,例如远程bean接口,因此我自己写了一个单例来缓存我的引用,只允许单引用.(服务定位)
我在两个不同的浏览器中打开了我的网站,而且这个单例只被初始化了一次.所以我假设它的应用范围?
应用程序范围托管bean的任何其他好处,然后能够访问其在jsf中的属性?
jsf ×6
el ×3
action ×1
bigdecimal ×1
cuda ×1
events ×1
facelets ×1
facescontext ×1
flash-scope ×1
gpgpu ×1
java ×1
java-ee ×1
jsf-2 ×1
managed-bean ×1
overloading ×1
primefaces ×1
reduction ×1
singleton ×1
templating ×1
timer ×1