我有一个简单的页面:
<h:form id="form">
<p:dataTable value="#{testBean.unitTypeModel}" var="elem" lazy="true" rows="10">
<p:column headerText="class">#{elem.class.simpleName}</p:column>
<p:column headerText="code">#{elem.code}</p:column>
<p:column headerText="description">#{elem.description}</p:column>
<p:column headerText="action">
<p:commandButton action="test2" icon="ui-icon ui-icon-wrench" value="edit">
<f:setPropertyActionListener target="#{testBean.selection}" value="#{elem}"/>
</p:commandButton>
</p:column>
</p:dataTable>
<p:commandButton action="test2" icon="ui-icon ui-icon-wrench"/>
</h:form>
而DataTable
中的CommandButton
不起作用,只是刷新页面。但是外面的那个正在工作。
如果我以这种方式更改值
和惰性
:
<h:form id="form">
<p:dataTable value="#{testBean.unitTypeModel.load(0, 10, null, null, null)}" var="elem" lazy="false" rows="10">
<p:column headerText="class">#{elem.class.simpleName}</p:column>
<p:column headerText="code">#{elem.code}</p:column>
<p:column headerText="description">#{elem.description}</p:column>
<p:column headerText="action">
<p:commandButton action="test2" icon="ui-icon ui-icon-wrench" value="edit">
<f:setPropertyActionListener target="#{testBean.selection}" value="#{elem}"/>
</p:commandButton>
</p:column>
</p:dataTable>
<p:commandButton action="test2" icon="ui-icon ui-icon-wrench"/>
</h:form>
DataTable
内部的CommanButton
就像一个符咒。
有人知道为什么?
是虫子吗?
我在
这个问题发布已经四年了,但问题仍然存在于6.0版。
我将为那些不想(或不能)使用ViewScoped bean的人发布一个解决方案。
前提是:“不能将任何“ajaxified”项放在绑定到RequestScoped stuff的惰性数据表中”。从不请记住,抛出ajax调用的任何东西都不会起作用。
因此,第一步是将ajax调用置于datable之外。我们将使用远程通信来做到这一点。您可以将此远程命令放置在DataTable之外的任何位置(当然是在表单中)
<p:remoteCommand name="remoteCall" action="#{bean.doStuff()}">
</p:remoteCommand>
现在,我们所要做的就是从DataTable内部调用这个RemoteCommand。我使用一个链接来执行javascript调用,但您可以使用按钮或任何您喜欢的方式:
<p:column>
<p:link value="#{item.id}" href="#" onclick="remoteCall([{name:'id', value:#{item.id}}])">
</p:link>
</p:column>
这个链接提供了一种调用javascript函数"Remote teCall"的方法,该函数将执行对"bean.doStuff()"的ajax调用。
注意,onClick事件不仅包含对“remoteCall”的javascript调用,而且还包含一个参数数组,该参数数组只有一个参数,名为“id”,值为“#{item.id}”。这将允许RemoteCommand向支持bean发送一个名为“id”的参数。
在“doStuff”方法中,必须检索“id”参数值:
public void doStuff () {
String id = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id");
}
发现延迟数据模型必须是回发请求上的同一实例,即使是具有相同值的新实例也无法工作。因此,它必须至少从一个@ViewScoped
bean提供。
问题是,每次尝试筛选表时,我的 实现中被重写的方法 都会被调用两次。 我的<代码>LazyDataModel<代码>实现: 我的xhtml视图: 和控制器
我想导出一个在报表生成期间具有LazyLoad数据模型的数据表(带分页)。 问题:当我导出时,报告从数据库逐页生成,然后导出到Excel/PDF,这会消耗更多时间。我想通过跳过逐页生成数据集来在单个数据库访问中获取它。 我生成了如下代码片段: JSF: 受管Bean: 数据模型: 注: < li >没有语法错误。 < li >所有自定义类型类都已定义。 如何通过跳过逐页生成记录来获得Excel报表
我正在使用JSF2。0和PrimeFaces3。1和3。1用于业务逻辑。我试图使用DataTable—延迟加载。但它给了我以下的错误。请帮忙。 发生错误:
我想在primeface可数据延迟加载完成后更新后备bean。我看到API有一个成功 我本可以使用监听器,但问题是监听器甚至在服务器端加载方法完成之前就被调用了。
问题内容: 在我的JSF数据表中,我实现了延迟加载,当我对记录进行分页时,执行下一组记录大约需要4到5秒的时间,实际上执行结果应该少于一秒钟。 这是我实现它的方式所发生的,不确定我该如何解决。 扩展LazyDataModel的DataModel类 和道课 有人可以解释是什么原因导致了记录分页时出现延迟吗? 如果我删除以下内容 并执行,那么它可以完美执行而没有延迟,但是问题始终是5,这是我每页的默认
所以,我有一个这样的日期: 在接收如下参数的页面上: 加载页面时,没有任何问题,一切正常。但当我单击下一页或尝试编辑行时,viewparam中的“必需消息”就会出现。看起来,当数据表上的任何内容发生更改时,param就会消失。 有什么想法吗?非常感谢。