【问题标题】:Datatable don't refresh数据表不刷新
【发布时间】:2013-06-04 14:40:44
【问题描述】:

瑞典晚上好!

我尝试让 primefaces 数据表刷新。我尝试了各种提示和解决方案,但没有任何效果。 该按钮触发数据库中的搜索,如果我手动刷新 paga 或者如果我使用表排序功能,则会显示结果。 意味着支持 bean 中的代码有效。但是点击按钮后没有直接自动刷新.. bean 作用域是 Session。

这是页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core" 
  xmlns:p="http://primefaces.org/ui">
  <h:head>
  </h:head>
<h:body>


<ui:composition template="/templates/BasicTemplate.xhtml">

<ui:define name="content">
<h:form id="src_res">
 <h2>Sök klass,undervisningsgrupp eller individ</h2>                     

            <b>Sökord</b>: &nbsp;<h:inputText  id="sw" value="#{smsb.searchword}"/>
            <p:outputLabel value="Lärare"></p:outputLabel>
            <h:selectOneListbox size="1" id="teacher" value="#{smsb.searchteacher}" >
            <f:selectItems  value="#{smsb.teachers}"/>
            </h:selectOneListbox>
            <p:commandButton action="#{smsb.searchgrp_user}" value="Sök!"   update="src_list"/> 

<p:dataTable   id="src_list"    value="#{smsb.searchresult}"  var="obj" >    

                  <p:column width="20%" sortBy="#{obj.groupname}">
                      <f:facet name="header" >
                          <h:outputText value="Beteckning"/>
                      </f:facet>    
                      <h:outputText value="#{obj.groupname}"/>
                  </p:column>
                  <p:column width="10%">
                      <f:facet name="header" >
                          <h:outputText value="typ"/>
                      </f:facet>    
                      <h:outputText value="#{obj.klass}"/>
                  </p:column>
                  <p:column width="10%" sortBy="#{obj.teacher}">
                      <f:facet name="header" >
                          <h:outputText value="lärare"/>
                      </f:facet>    
                      <h:outputText value="#{obj.teacher}"/>
                  </p:column>
              </p:dataTable>
              </h:form>
</ui:define>
</ui:composition>
</h:body>
</html>

任何帮助或提示?

关于 拉尔夫

编辑

您好,感谢您提供帮助!

正如你所猜测的,searchresult 是一个列表,而 Getter 是由

定义的
List<sbasUserList> searchresult;    

public List<sbasUserList> getSearchresult() {
    return searchresult;
}  

search_grp 是 backing bean 的一个方法:

public String searchgrp_user(){



    //FacesContext context = FacesContext.getCurrentInstance(); 

    ObjectContainer db = this.connBD("sms");
    ObjectSet<sbasUserList> res;

    this.searchresult = new ArrayList<sbasUserList>() ;

    Query query=db.query();
    query.constrain(sbasUserList.class);
    query.descend("groupname").constrain(this.searchword).like();
      query.descend("type").constrain('P').or(query.descend("type").constrain('M'));
    query.descend("teacher").constrain(searchteacher).contains();       
    res = query.execute();
    this.searchresult.addAll(res);
    System.out.println(this.searchresult.size());
    db.close();
    return "";
}

如果我手动更新浏览器,表格中会填满正确的数据。 (F5) 但当然希望自动完成。

【问题讨论】:

  • 我说得对吗?是搜索按钮?什么是smsb.searchresult,一个动作还是一个列表?如果是List,你确定调用smsb.searchgrp_user后值改变了吗?如果是一个动作,它在做什么?
  • 嗨,Ralf,你能展示一下 bean 代码的来源吗?
  • @user1983983 :我用一些相关代码更新了我的问题。
  • 尝试在searchgrp_user中返回null或者将返回类型设置为void

标签: jsf-2 primefaces datatable


【解决方案1】:

对不起各位!我使用的 glassfish 服务器设置不正确。它并未显示日志文件中的所有错误。我对整个 IDE 进行了全新的设置(新的 Eclipse,新的 glassfish 服务器,thanx BalusC 的令人难以置信的教程!!!)我发现了所有错误。现在它可以正常工作了!

问候 拉尔夫

【讨论】:

    猜你喜欢
    • 2019-05-26
    • 2017-10-16
    • 2017-07-24
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 2012-09-21
    相关资源
    最近更新 更多