如何保留数据表

时间:2015-12-23 06:17:45

标签: jsf jsf-2 primefaces datatable

我正在使用primefaces 5.0mojarra 2.1.28。有两个选项卡,一个包含带有排序,过滤,分页和选择选项的数据表,第二个选项卡包含所选行的详细信息。在行上双击第二个选项卡打开所选行的详细信息。

  

现在的问题是,当我过滤记录并选择或双击第二行选项卡时打开详细信息,当我回到第一个标签时,我的数据表重置其过滤器。同样的问题与分页。

有没有办法坚持datatable的状态?

其他信息:

  1. 我没有使用懒模型,也不想使用懒模型。
  2. 视图范围内的CDI bean。

1 个答案:

答案 0 :(得分:0)

如果您没有向我们展示代码,找出您的问题非常棘手......

在我的想象中,您的视图如下所示:

2015-12-24 07:31:03,034 WARN [main] org.apache.hadoop.mapred.YarnChild:
Exception running child : java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hive.hcatalog.mapreduce.HCatInputFormat not found
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2195)
    at org.apache.hadoop.mapreduce.task.JobContextImpl.getInputFormatClass(JobContextImpl.java:174)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:749)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Caused by: java.lang.ClassNotFoundException: Class org.apache.hive.hcatalog.mapreduce.HCatInputFormat not found
    at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2101)
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2193)
    ... 8 more

2015-12-24 07:31:03,037 INFO [main] org.apache.hadoop.mapred.Task: Runnning cleanup for the task

如果是这种情况,您正在更新数据表,并且不会重新应用过滤器。我建议您使用以下解决方案之一:

  1. 只需更新双击事件中第二个标签的内容:

    Ubuntu 12.04 (64 bit)
    Hadoop 2.7.1
    Hbase  0.98.16
    Hive   0.14.0
    Kylin  1.1.1
    
  2. 更新后调用数据表上的filter方法:

    <h:form name="form" />
      <p:tabView id="tabs">
        <p:tab title="Table Tab">
          <p:datatable widgetVar="table">
            <p:column></p:column>
            <p:ajax event=”rowDblselect” update=”:form” />
          </p:datatable>
        </p:tab>
        <p:tab title="Detail Row">
          <p:outputPanel id="details">
            <h:outputText value="#{exampleBean.rowDetail}" />
          </p:outputPanel>
        </p:tab>
      </p:tabView>
    </h:form>
    
  3. 我认为其中一种解决方案可以解决您的问题。