【问题标题】:DataTable with RadioCheckbox blank带有 RadioCheckbox 空白的 DataTable
【发布时间】:2012-10-09 11:06:35
【问题描述】:

我需要一个带有 RadioCheckbox 的 DataTable 然后找到了链接

FacesException: DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled

所有我需要的,但是运行时页面是空白的并且没有给出异常。

无论如何我也会发布我的代码。

我的 xhtml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">

<h:head>
  <title>Primefaces 3.1</title>
</h:head>

<h:body>
 <h:form id="form">
   <p:dataTable value="#{tableBean.cars}" var="var" paginator="true" rows="10"
    selection="#{tableBean.car}"
    selectionMode="single">
      <p:column>
        <f:facet name="header">
      <h:outputText styleClass="outputText" value="Model"></h:outputText>
        </f:facet>
        <h:outputText styleClass="outputText" value="#{var.model}"></h:outputText>
      </p:column>
      <p:column>
    <f:facet name="header">
      <h:outputText styleClass="outputText" value="Color"></h:outputText>
    </f:facet>
        <h:outputText styleClass="outputText" value="#{var.randomColor}"></h:outputText>
       </p:column>
    </p:dataTable>
   </h:form>
 </h:body>
</html>

豆子:

@ManagedBean
@SessionScoped
public class TableBean implements Serializable{

    private static final long serialVersionUID = 1L;

    private List<Car> cars;
    private Car car;
    private CarDataModel carsModel;

    public TableBean() {
        cars = new ArrayList<Car>();     
        Car car1 = new Car();
        car1.setModel("BMW");
        car1.setRandomColor("Black");
        cars.add(car1);
        Car car2 = new Car();       
        car2.setModel("Audi");
        car2.setRandomColor("White");
        cars.add(car2);       

        carsModel = new CarDataModel(cars);
    }

    public List<Car> getCars() {   
        return cars;
    }

    public String onRowSelect(){
        System.out.println("Row Click!!!");
        return "otherpage";//Does this nav works???if not how???
    }

    public Car getCar() {
        return car;
    }    

    public CarDataModel getCarsModel() {
    return carsModel;
    }


    public void setCarsModel(CarDataModel carsModel) {
    this.carsModel = carsModel;
    }

汽车数据模型:

public class CarDataModel extends ListDataModel<Car> implements SelectableDataModel<Car>, Serializable {  

    private static final long serialVersionUID = 1L;

    public CarDataModel(List<Car> data) {
        super(data);
    }

    @Override
    public Car getRowData(String rowKey) {
        @SuppressWarnings("unchecked")
        List<Car> cars = (List<Car>) getWrappedData();

        for(Car car : cars) {
            if(car.getModel().equals(rowKey))
                return car;
        }

        return null;
    }

    @Override
    public Object getRowKey(Car car) {
        return car.getModel();
    }

我不知道会是什么。

谢谢!

【问题讨论】:

  • 已更改 未成功。
  • 这就是我讨厌 facelets 和 jsf 的地方。空白页是最糟糕的。没有迹象表明出了什么问题

标签: jsf primefaces


【解决方案1】:

我认为问题出在这里:

public TableBean() {
        cars = new ArrayList<Car>();     
        Car car1 = new Car();
        car1.setModel("BMW");
        car1.setRandomColor("Black");
        cars.add(car1);
        Car car2 = new Car();       
        car2.setModel("Audi");
        car2.setRandomColor("White");
        cars.add(car2);       

        carsModel = new CarDataModel(cars);
    }

您不能将值放入构造函数中的列表中。 如果您将该代码移至 getCars() 方法,它应该可以工作

public TableBean() {}

public List<Car> getCars() {   
    if(cars != null && !cars.isEmpty()) return cars;
    else {
                  cars = new ArrayList<Car>();     
            Car car1 = new Car();
            car1.setModel("BMW");
            car1.setRandomColor("Black");
            cars.add(car1);
            Car car2 = new Car();       
            car2.setModel("Audi");
            car2.setRandomColor("White");
            cars.add(car2);       

            carsModel = new CarDataModel(cars);
    }
    return cars;
}

【讨论】:

  • 没有成功舍文!使用The Debug可以看到他花费了每一步并返回了一个List,但是浏览器中什么也没有出现。要通过 getCars 切换到 。我不知道可以是什么。 ://
  • 当我在 xhtml 处运行时会发出警告:NLS 丢失消息:CANNOT_FIND_FACELET_TAGLIB 在:org.eclipse.jst.jsf.core.validation.internal.facelet.messages。很奇怪!如果我关闭并再次打开,这个 Eclipse 警告就会消失。
  • DataTable 可以通过示例显示:primefaces-rocks.appspot.com/ui/…。现在我无法显示
猜你喜欢
  • 2020-03-16
  • 2015-11-11
  • 2016-01-08
  • 1970-01-01
  • 2023-01-21
  • 2017-07-21
  • 1970-01-01
  • 1970-01-01
  • 2016-02-05
相关资源
最近更新 更多