【问题标题】:JSF - dataTable binding causing ERROR (can't convert)JSF - 导致错误的数据表绑定(无法转换)
【发布时间】:2016-05-06 14:33:28
【问题描述】:

我是 JSF 的新手。 我需要从dataTable 中检索rowData

这是我的代码:

       <h:form>
            <h1><h:outputText value="List"/></h1>
            <p:dataTable value="#{accountBacking.dataModel}" 
                         binding="#{accountBacking.htmlTable}" 
                         var="item">
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Id"/>
                    </f:facet>
                    <h:outputText value="#{item.id}"/>
                </p:column>
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Action"/>
                    </f:facet>
                    <p:commandButton value="Submit" action="#{accountBacking.destination()}/>
                </p:column>
           </p:dataTable>
        </h:form>

豆:

import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.html.HtmlDataTable;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

@ManagedBean (name = "accountBacking")
@ViewScoped
public class AccountBacking implements Serializable {

private List<Account> daftarAccount;
private DataModel dataModel;
private HtmlDataTable htmlTable;
private AccountFacade service;
private Account account;

@PostConstruct
public void init()
{

}

public DataModel getDataModel() {
    dataModel = new ListDataModel();
    daftarAccount = service.findAll();
    if(daftarAccount != null && daftarAccount.size()>0)
        dataModel.setWrappedData(daftarAccount);

    return dataModel;
}

public void setDataModel(DataModel dataModel) {
    this.dataModel = dataModel;
}


public HtmlDataTable getHtmlTable() {
    return htmlTable;
}

public void setHtmlTable(HtmlDataTable htmlTable) {
    this.htmlTable = htmlTable;
}

public void destination(){
   acount = (Account)htmlTable.getRowData();
}

但是,h:dataTable 内部的绑定标签会导致错误,它说:

Cannot convert org.primefaces.component.datatable.DataTable@4f5b348a of type class org.primefaces.component.datatable.DataTable to class javax.faces.component.html.HtmlDataTable

这是为什么呢?以及如何修复它以便我可以从表中检索rowData

提前致谢!

【问题讨论】:

  • 发生这种情况是因为您在代码中执行的操作...如何解决?将其威胁为 org.primefaces.component.datatable.DataTable 而不是 javax.faces.component.html.HtmlDataTable。如何检索行或行数据?看看 PrimeFaces 展示...你似乎找到了一些非常古老的教程之类的东西

标签: jsf primefaces datatable


【解决方案1】:

这种情况正在发生,因为 org.primefaces.component.datatable.DataTable 没有扩展(不是 A)类 javax.faces.component.html.HtmlDataTable .

这是 Primeface 的 Datable 类层次结构

类数据表

java.lang.Object
    javax.faces.component.UIComponent
        javax.faces.component.UIComponentBase
          javax.faces.component.UIData
              org.primefaces.component.api.UIData
                  org.primefaces.component.datatable.DataTable

改变

private HtmlDataTable htmlTable;

private DataTable htmlTable; // also change the import statement

你的代码就可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-24
    • 2020-01-12
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    相关资源
    最近更新 更多