Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
Java 从另一个组件更新dataTable(使用延迟加载)_Java_Jsf_Primefaces - Fatal编程技术网

Java 从另一个组件更新dataTable(使用延迟加载)

Java 从另一个组件更新dataTable(使用延迟加载),java,jsf,primefaces,Java,Jsf,Primefaces,我在一个数据表中使用带分页的延迟加载,效果很好。问题是,我在同一html页面中有一个高级搜索功能,当我单击搜索按钮时,我希望根据我在高级搜索字段中输入的值更新我的dataTable(此功能在DaoFactory.getDocumentoDao().Buscallazy(第一个,pageSize)中实现, 代码如下。但是我按钮上的更新属性似乎没有任何作用,因为没有调用惰性模型的加载方法。所以问题是:我是否可以从模型外部调用惰性模型的加载方法,以便更新我的数据表 表格: 科迪戈 包含模型的BEA

我在一个数据表中使用带分页的延迟加载,效果很好。问题是,我在同一html页面中有一个高级搜索功能,当我单击搜索按钮时,我希望根据我在高级搜索字段中输入的值更新我的dataTable(此功能在
DaoFactory.getDocumentoDao().Buscallazy(第一个,pageSize)
中实现, 代码如下。但是我按钮上的更新属性似乎没有任何作用,因为没有调用惰性模型的加载方法。所以问题是:我是否可以从模型外部调用惰性模型的加载方法,以便更新我的数据表

表格:


科迪戈
包含模型的BEAN:

@ManagedBean
@SessionScoped
public class DocumentoBuscadorBean {

   private LazyDataModel<DocumentoBean> lazyModel;

   @SuppressWarnings("serial")
   public DocumentoBuscadorBean() {

      lazyModel = new LazyDataModel<DocumentoBean>() {

      public List<DocumentoBean> load(int first, int pageSize, String sortField, boolean sortOrder, Map<String,String> filters) { 
            List<DocumentoBean> lazyListDocumentos = new ArrayList<DocumentoBean>();
               try {                  
                  lazyListDocumentos = DaoFactory.getDocumentoDao().buscarLazy(first, pageSize);
             } catch (DocumentoException e) {
                e.printStackTrace();
             }
               return lazyListDocumentos;
           }         
         };            
         lazyModel.setRowCount(DaoFactory.getDocumentoDao().rowCount());
         lazyModel.setPageSize(5);
   }
   public LazyDataModel<DocumentoBean> getLazyModel() {
      return lazyModel;
   }

}
@ManagedBean
@会议范围
公共类DocumentoBuscadorBean{
私人LazyDataModel lazyModel;
@抑制警告(“串行”)
公共文档obuscadorbean(){
lazyModel=新的LazyDataModel(){
公共列表加载(int-first、int-pageSize、字符串排序字段、布尔排序器、映射筛选器){
List lazyListDocumentos=new ArrayList();
试试{
lazyListDocumentos=DaoFactory.getDocumentoDao().buscallazy(第一个,页面大小);
}捕获(文档异常e){
e、 printStackTrace();
}
返回懒散文件;
}         
};            
LazModel.setRowCount(DaoFactory.getDocumentoDao().rowCount());
lazyModel.setPageSize(5);
}
公共LazyDataModel getLazyModel(){
返回lazyModel;
}
}

如果我没有遗漏什么,您可以使用操作:

<p:commandButton value="Buscar"
                 action="#{documentoBuscadorBean.lazyModel.load(0,10,...)}"
                 process="@form"
                 update="frmCli:panelResultadosDoc"/>

最好添加加载的无参数版本,这样就不会在视图中混用逻辑。如果出于某种原因不能使用EL 2.2,这甚至是强制性的(尽管我强烈建议使用EL 2.2,它为您节省了很多丑陋的f:param处理)。

这是什么意思
#{varDocBean.documento.id}
varDocBean
是一个
DocumentoBean
-那么
documento
是DocumentoBean的一个属性吗

还有,什么commandButton不做任何事情?我只看到一个commandButton,但是没有动作方法


你应该(再)看看在Primefaces lab showcase中的
lazy dataTable

您不能在jsf!@spauny中添加这样的参数值。请阅读示例并删除这种误导性的下推。如果OP使用jsf 1,创建无参数版本的load就足够容易了。这取决于EL实现。只有JBoss EL和JSP 2.2 EL能够这样做g这…也使用Seam使这成为可能…使用简单的JSF+Primefaces这是不可能的。投票不能被删除,除非你编辑你的帖子,并以其他方式添加参数。。。
<p:commandButton value="Buscar"
                 action="#{documentoBuscadorBean.lazyModel.load(0,10,...)}"
                 process="@form"
                 update="frmCli:panelResultadosDoc"/>