【发布时间】:2013-05-24 04:45:02
【问题描述】:
我正在使用 JSF 2.0 和 Primefaces 3.4.2,当我运行我的应用程序时,我收到以下异常
java.lang.NullPointerException: Argument Error: Parameter text is null
at com.sun.faces.renderkit.html_basic.HtmlResponseWriter.writeText(HtmlResponseWriter.java:877)
at org.primefaces.component.datatable.DataTableRenderer.encodeFilter(DataTableRenderer.java:450)
at org.primefaces.component.datatable.DataTableRenderer.encodeColumnHeader(DataTableRenderer.java:360)
at org.primefaces.component.datatable.DataTableRenderer.encodeThead(DataTableRenderer.java:551)
at org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:218)
at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:192)
at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:74)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
JSF 代码片段
<p:column id="empName" headerText="Name" filterBy="#{emp.empName}"
filterOptions="#{myMB.empFilter}"
filterMatchMode="exact">
<h:outputText value="#{emp.empName}"/>
</p:column>
在我的 ManagedBean 中
public Map<String,String> loadNames() {
names = new LinkedHashMap<String,String>();
names.put("Smith", "S");
names.put("Jones", "J");
return names;
}
private SelectItem[] empFilter;
public void init() {
empFilter= new SelectItem[loadNames().size() + 1];
empFilter[0] = new SelectItem("", "Select");
for (int i=1; i< empFilter.length; i++) {
empFilter[i] = new SelectItem(loadNames().get(i-1), loadNames().get(i-1));
}
}
【问题讨论】:
-
您的表从 bean 接收到什么值?
-
@AlexandreLavoie 你的意思是JSF数据表还是数据库表?我有来自 LinkedHashMap 的静态值。
-
在这个
#{emp.empName}emp 中应该是 p:dataTable var,但我没有看到您的 bean 中的任何对象具有 empName getter/setter。 -
@AlexandreLavoie emp 确实是 p:dataTable var
<p:dataTable id="dataTable" var="emp" lazy="true" -
@AlexandreLavoie 我注意到当我从
Map<String,String>更改并使用List<String> empList;时没有错误,我可以在 JSF 页面中看到下拉值。
标签: jsf jsf-2 primefaces