ace:复合组件内的数据表在JSF中不起作用

时间:2015-04-20 14:16:21

标签: jsf composite-component ace-datatable

我尝试在复合组件中使用标签<ace:datatable>主要是效果很好。我想从表中获取行数据以在bean中使用它,但是当我单击该行时,我收到错误消息

  

内部服务器错误

我需要你的帮助(BalusC :))来修复这个错误。

这是我的组成部分:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:cc="http://java.sun.com/jsf/composite"
      xmlns:ace="http://www.icefaces.org/icefaces/components"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:icecore="http://www.icefaces.org/icefaces/core"
      xmlns:ice="http://www.icesoft.com/icefaces/component" >
    <head>
        <title>IGNORED</title>
    </head>
    <body>
        <ui:composition>
            <cc:interface componentType="partnercard">
                <!-- properties -->
                ...
            </cc:interface>
            <cc:implementation>
                <div id="#{cc.clientId}">
                    <ace:dataTable id="partnerTable"
                                   value="#{cc.partnersList}"
                                   binding="#{cc.partnersTable}"
                                   var="partner"
                                   paginator="true"
                                   paginatorPosition="bottom"
                                   rows="10"
                                   style="font-size: 11px;margin-top: 10px;"
                                   selectionMode="single"
                                   stateMap="#{cc.stateMap}" >
                        <ace:ajax event="select" render="@this" execute="@this" />

                        <ace:column id="id"
                                    headerText="ID"
                                    sortBy="#{partner.id}"
                                    filterBy="#{partner.id}"
                                    filterMatchMode="contains"
                                    rendered="false">
                            <h:outputText id="idCell" value="#{partner.id}"/>
                        </ace:column>

                        <ace:column id="name"
                                    headerText="Name"
                                    sortBy="#{partner.name}"
                                    filterBy="#{partner.name}"
                                    filterMatchMode="contains">
                            <h:outputText id="nameCell" value="#{partner.name}"/>
                        </ace:column>
                    </ace:dataTable>
                </div>
            </cc:implementation>
        </ui:composition>
    </body>
</html>

组件支持bean

import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;
import javax.faces.application.FacesMessage;
import javax.faces.component.FacesComponent;
import javax.faces.component.NamingContainer;
import javax.faces.component.UIInput;
import javax.faces.component.html.*;
import javax.faces.component.UINamingContainer;
import javax.faces.context.FacesContext;
import javax.faces.component.UIData;
import org.icefaces.ace.model.table.RowStateMap;

@FacesComponent("partnercard")
public class partnercard extends UINamingContainer implements Serializable {

    private RowStateMap stateMap = new RowStateMap();
    private List<PartnerData> partnersList = new ArrayList<PartnerData>();
    private UIData partnersTable; // поиск партнера - таблица со списком партнеров

    @Override
    public String getFamily() {
        return UINamingContainer.COMPONENT_FAMILY;
    }

    public void encodeBegin(FacesContext context) throws IOException {
        super.encodeBegin(context);
    }

    public UIData getPartnersTable() {
        return partnersTable;
    }

    public void setPartnersTable(UIData partnersTable) {
        this.partnersTable = partnersTable;
    }

    public RowStateMap getStateMap() {
        return stateMap;
    }

    public void setStateMap(RowStateMap stateMap) {
        this.stateMap = stateMap;
    }

    public List<PartnerData> getPartnersList() {
        return partnersList;
    }

    public void setPartnersList(List<PartnerData> partnersList) {
        this.partnersList = partnersList;
    }
}

这是PartnerData.java

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;

public class PartnerData implements Serializable {

    private long id = 0;
    private String name = "";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }
}

0 个答案:

没有答案