我使用的是PrimeFaces 2.2和JSF 2.0.3。
我有一个包含以下数据表的xhtml视图:
<p:dataTable id="fooTable"
widgetVar="fooTable"
rowKey="#{foo.id}"
var="foo"
value="#{fooQueue.foos}"
styleClass="table"
selection="#{fooQueue.selectedfoo}"
filteredValue="#{fooQueue.filteredfoos}"
paginatorPosition="bottom"
paginatorAlwaysVisible="true"
selectionMode="single"
rowEditListener="#{fooQueue.save}"
paginator="true"
rows="10"
rowIndexVar="#{foo.id}"
emptyMessage="No foos found with given criteria"
rowStyleClass="#{foo.status == const.submitted ? 'gray' : null}"
onRowSelectUpdate=":form:deleteValidation">
<p:column id="mothersName" filterBy="#{foo.header1}" filterMatchMode="contains">
<f:facet name="header">
<h:outputText value="Mother's Name" styleClass="tableHeader2" />
</f:facet>
<p:commandLink action="#{fooQueue.next(foo)}"
ajax="false"
disabled="#{foo.status == const.submitted || foo.id == 0}">
<f:setPropertyActionListener value="#{foo}" target="#{fooQueue.selectedfoo}" />
<h:outputText value="#{foo.header1}" styleClass="tableData" />
</p:commandLink>
</p:column>
<p:column sortBy="#{foo.header4}" >
<f:facet name="header">
<h:outputText value="DOB" styleClass="tableHeader2" style="width: 400px" />
</f:facet>
<h:outputText value="#{foo.header4}" styleClass="#{(foo.overSevenDays and foo.status != const.submitted and foo.id != 0)?'tableDataRed':'tableData'}" />
</p:column></p:dataTable>
..具有以下背衬豆:
@ViewScoped
@ManagedBean
public class FooQueue extends BaseViewBean {
private List foos;
private Foo selectedFoo;
private List filterdFoos;
public FooQueue() {
logger.debug("Creating new FooRegQueue");
retrieveFooRecords();
}
private void retrieveFooRecords(){
foos = new ArrayList();
foos.addAll(fooService.getAllFoos());
}
public String next(Foo clickedFoo) {
System.out.println(clickedFoo.getId());
return "";
}
public Collection getFoos() {
return foos;
}
public Foo getSelectedFoo() {
return selectedFoo;
}
public void setSelectedFoo(Foo foo) {
if (foo != null) {
this.selectedFoo = foo;
}
}
public void setFilterdFoos(List filterdFoos) {
this.filterdFoos = filterdFoos;
}
public List getFilterdFoos() {
return filterdFoos;
}
}
注意母亲姓名列上的“commandLink”和出生日期列上的“sortBy”。
我遇到了一个奇怪的问题,似乎仅限于IE,如果我按DOB对数据进行排序,然后分页到最后一页并单击表中最后一条记录的commandLink,它会触发两个action事件。第一个事件正确地报告了我单击了排序表中的最后一条记录。但是对next()方法的第二次调用是针对未排序表中的最后一条记录。
有人能识别出我的xhtml或支持bean有什么问题吗?这是一个已知的PrimeFaces问题吗?一个已知的IE问题?
我正在用IE 8进行测试。
我解决了它。我只需要改变这一点:
<p:commandLink action="#{fooQueue.next(foo)}"
ajax="false"
disabled="#{foo.status == const.submitted || foo.id == 0}">
<f:setPropertyActionListener value="#{foo}" target="#{fooQueue.selectedfoo}" />
<h:outputText value="#{foo.header1}" styleClass="tableData" />
</p:commandLink>
到这:
<p:commandLink action="#{fooQueue.next(foo)}"
ajax="true"
disabled="#{foo.status == const.submitted || foo.id == 0}">
<f:setPropertyActionListener value="#{foo}" target="#{fooQueue.selectedfoo}" />
<h:outputText value="#{foo.header1}" styleClass="tableData" />
</p:commandLink>
注意ajax=“true”。因为它之前被设置为ajax=“false”,所以它正在实例化我的支持bean的一个新实例,并且正在加载以默认排序顺序选择的行。现在它不实例化新实例,我加载我单击的实际记录。
主要内容:JSF数据表更新行数据实例JSF中有一个叫作的控件,可用来渲染和格式化表格。使用,我们可以迭代收集或数组数组来显示数据。下面我们来学习如何向排序数据。 要使用,我们需要添加以下HTML头。 以下JSF标签 - 被渲染成以下HTML标签。 JSF数据表更新行数据实例 打开 NetBeans IDE 创建一个Web工程:DataTableSort,其目录结构如下所示 - 创建以下文件代码,文件:index.xhtml 的代码内
我开始在我的项目中使用primefaces,我马上就遇到了问题。我有一个列表,其中包含一些我用实体管理器从数据库中获取的东西,我在primefaces数据表的视图中显示了它。在我的后台bean中,我有:List getList(),在这里我使用实体管理器从数据库中检索记录,并立即返回。。 和myService: 我的豆子: 视图: 这种方式primefaces排序不起作用,我在堆栈上的某个地方读到
主要内容:JSF数据表更新行数据实例JSF中有一个叫作的控件,可用来渲染和格式化表格。使用,我们可以迭代收集或数组数组来显示数据。下面我们来学习如何向使用排序数据。 要使用,我们需要添加以下HTML头。 以下JSF标签 - 被渲染成以下HTML标签。 JSF数据表更新行数据实例 打开 NetBeans IDE 创建一个Web工程:DataTableSortDataModel,其目录结构如下所示 - 创建以下文件代码,文件:index
当xhtml运行时,数据表会显示出来,但只有一列显示为可用于排序(即,标题中有向上/向下箭头图标)。 dataTable有两个问题: 只有一列(年份)显示为可用于排序。(Year是Car类中“int”类型的属性,而其他三列是String类型,因此问题的一个方面是String字段忽略了sortby=“#{Car.xxx}”标记。) 年份列实际上是不可排序的。点击年份标题的向上/向下箭头没有效果。当点
我有一个p:dataTable,它存储已处理表单的结果,我执行以下操作: 填充表单值。 提交。 已填充数据表--对任何列进行筛选。 更改表单值。 提交。 使用新结果填充数据表。 对任意列排序--将显示来自#3的筛选结果。 我有一个用于筛选值的arraylist,但我没有在bean中对它做任何操作。提交时,我调用actionListener,该actionListener将dataTable强制转换
我用的是Primefaces 5.2。 到目前为止,排序工作还不错,但如果我对其中一个表(我们称之为表a)进行排序,然后刷新页面(例如,通过激发h:commandButton),则会出现奇怪的行为,最后会出现NullPointerException。在这种情况下,所有表都有与表a相同的列高亮显示。此外,当我随后对表a以外的表进行排序时,就会出现以下异常: