【发布时间】:2015-07-11 02:51:23
【问题描述】:
我有一个single 选择表,当我选择一行时,会发生此异常:
com.sun.faces.context.PartialViewContextImpl.processPartial javax.el.ELException: /Test.xhtml @18,79 selection="#{testBean.selectedBook}": Cannot convert [Ljava.lang.Object;@5b9b0639 of type class [Ljava.lang.Object; to class com.obs.model.Book
javax.el.ELException: /Test.xhtml @18,79 selection="#{testBean.selectedBook}": Cannot convert [Ljava.lang.Object;@5b9b0639 of type class [Ljava.lang.Object; to class com.obs.model.Book
Caused by: javax.el.ELException: Cannot convert [Ljava.lang.Object;@5b9b0639 of type class [Ljava.lang.Object; to class com.obs.model.Book
这是我的 Books 表:
<h:form>
<p:dataTable id="singleDT" var="item" value="#{testBean.booksList}" selectionMode="single"
selection="#{testBean.selectedBook}" rowKey="#{item[0]}">
<p:ajax event="rowSelect" listener="#{testBean.onRowSelect}"/>
<p:ajax event="rowUnselect" listener="#{testBean.onRowUnselect}"/>
<p:column headerText="Id">
<h:outputText value="#{item[0]}"/>
</p:column>
<p:column headerText="Title">
<h:outputText value="#{item[1]}"/>
</p:column>
<f:facet name="footer">
<p:commandButton process="singleDT" icon="ui-icon-search" value="View" action="#{testBean.showPlease}"/>
</f:facet>
</p:dataTable>
</h:form>
这是testBean:
private List<Book> booksList;
private Book selectedBook;
public Book getSelectedBook() {
return selectedBook;
}
public void setSelectedBook(Book selectedBook) {
this.selectedBook = selectedBook;
}
public void onRowSelect(SelectEvent event) {
System.out.println("row selected, " + event.getObject()); // displays [Ljava.lang.Object;@62699e1d
}
public void onRowUnselect(UnselectEvent event) {
System.out.println("row Unselected");
}
@Transactional
public List<Book> allBooks() {
// fill the list with hibernate
return booksList;
}
//getter/setters
我将选定的行分配给selectedBook
错误是无法从object 类型转换为Book 类型。
selectedBook变量类型是Book,但是哪个变量是object导致这个错误?
【问题讨论】:
-
@Kukeltje 与此无关。
-
如果你学习如何调试、分析堆栈跟踪等,你会发现它与 IS 100 相关
-
你已经得到了这个异常并且你被告知了它。您为什么尝试使用类似数组的索引(例如
item[0])来引用此列表 -List<Book> booksList?异常消息表明Object[]不能(类型)转换为Book([Ljava.lang.Object;表示Object[].class-java.lang.Class表示Objects 的数组类)。 -
@Tiny 因为我使用的是带有 jsf 的 hibernate,所以 hibernate 查询返回
list Of arrays。
标签: hibernate jsf primefaces datatable