1

いくつか試してみましたが、フィルター dataTable で何もできませんでした。すでにプライムフェイスのショーケースの例に従ってください。

次のコードがあります。

xhtml:

<p:dataTable id="dataTable" var="valor" value="#{beanMensagemXContato.listaContatoEmail}" 
                widgetVar="carsTable" emptyMessage="No cars found with given criteria" filteredValue="#{tableBean.filteredCars}">                           

                <f:facet name="header">  

                    </f:facet> 

                    <p:column 
                        style="max-width: 50px; min-width: 50px; overflow: hidden">
                        <f:facet name="header">
                            <h:outputText value="Contato" />
                        </f:facet>
                        <h:outputText value="#{valor.nomGrupoEmail}" />
                    </p:column>

                    <p:column
                        style="max-width: 50px; min-width: 50px; overflow: hidden">
                        <f:facet name="header">
                            <h:outputText value="Email" />
                        </f:facet>
                        <h:outputText value="#{valor.endEmail}" />
                    </p:column>

                    <p:column
                        style="max-width: 50px; min-width: 50px; overflow: hidden">
                        <f:facet name="header">
                            <h:outputText value="Telefone" />
                        </f:facet>
                        <h:outputText value="#{valor.numTelefone}" />
                    </p:column>

                    <p:column
                        style="max-width: 50px; min-width: 50px; overflow: hidden">
                        <f:facet name="header">
                            <h:outputText value="Ações" />
                        </f:facet>

                    </p:column>


                </p:dataTable>

豆:

public List<ContatoEmail> getListaContatoEmail() {

        listaContatoEmail = new ArrayList<ContatoEmail>();
        listaContatoEmail = consultaContatoEmail.listarContatoEmail();

        return listaContatoEmail;
    }

dataTable に単語を入力すると行が選択されるようにしたい。

誰かが私に簡単な例を渡すことができますか?

私はすでに感謝しているので。

デボラ

4

2 に答える 2

3

わかりました、ここに例があります: 車の一般的な例を取り上げます。

ユース ケース: オートコンプリートでキーストロークごとにデータ テーブルを動的に更新する

私のフェイスレット:

<!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://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
<f:view>
    <h:head />
    <h:body>
        <h:form>
            <p:autoComplete var="carac" converter="carconvertor"
                value="#{testBean.selectedCar}" itemLabel="#{carac.carmodel}"
                itemValue="#{carac}"
                completeMethod="#{testBean.complete}" process="@this"
                onSelectUpdate="idGrid">
                <p:ajax event="keyup" listener="#{testBean.onValueChange}"
                    update="idGrid"></p:ajax>
            </p:autoComplete>

            <p:dataTable value="#{testBean.matchingCarModels}" var="carmatch"
                id="idGrid" converter="carconvertor">
                <p:column headerText="Car Model">
                    <h:outputText value="#{carmatch.carmodel}" />
                </p:column>
            </p:dataTable>
        </h:form>
    </h:body>
</f:view>
</html>

車のPOJO

public class Car 
{
    private String carmodel;

    public Car(String carmodel) {
        super();
        this.carmodel = carmodel;
    }
    // Add setters and getters
}

カーフェイスコンバーター

@FacesConverter(forClass=Car.class, value="carconvertor")
public class CarConverter 
implements Converter {
    @Override
    public Object getAsObject(FacesContext arg0, UIComponent component, String stringvalue) {
        Car car = new Car(stringvalue);
        return car;
    }

    @Override
    public String getAsString(FacesContext arg0, UIComponent component, Object objectvalue) {
        Car car = (Car) objectvalue;

        if(car == null) {
            return StringUtils.EMPTY;
        }

        return car.getCarmodel();
    }
}

そして最後にバッキングビーン

@ManagedBean(name="testBean")
@SessionScoped
public class TestBackingBean 
{
    /**
     * The input filter
     */
    private String filter = StringUtils.EMPTY;

    /**
     * Some test data
     */
    private final List<Car> carModels = new ArrayList<Car>() {
        {
            add(new Car("toyota"));
            add(new Car("honda"));
            add(new Car("suzuki"));
            add(new Car("ford"));
            add(new Car("renault"));
            add(new Car("subaru"));
        }
    };

    /**
     * For updating the grid.
     */
    public void onValueChange(AjaxBehaviorEvent event)
    {
        AutoComplete ac = (AutoComplete) event.getSource();

        Car input = (Car) ac.getValue();

        filter = (input == null) ? StringUtils.EMPTY : input.getCarmodel();
    }

    /**
     * For the auto complete drop down
     */
    public List<Car> complete(String input)
    {
        filter = input;

        return getMatchingCarModels();
    }

    /**
     * get the match
     */
    public List<Car> getMatchingCarModels()
    {
        if(StringUtils.isEmpty(filter))
            return carModels;

        List<Car> matches = new ArrayList<Car>();

        for(Car car : carModels)
        {
            if(car.getCarmodel().startsWith(filter))
            {
                matches.add(car);
            }
        }

        return matches;
    }

    /**
     * The selected car
     */
    private Car selectedCar;
    //Add setters and getters for above member
}

HTH

于 2013-03-24T08:14:48.563 に答える
1

こちらのstackoverflowで同じ問題の解決策を見ることができます

キーアップ イベントを検索してキャプチャし、データ テーブルを更新するための代替アプローチ (オート コンプリートを使用) として。コンテキストに集計する例:

<p:autoComplete var="address"
    value="#{addressBean.address}" itemLabel="#{address.personName}"
    itemValue="#{address}" completeMethod="#{addressBean.complete}"
    process="@this" converter="personconvertor"
    onSelectUpdate="dataTable">
    <p:ajax event="keyup" listener="#{addressBean.onValueChange}"
        update="dataTable"></p:ajax>
</p:autoComplete>
于 2013-03-22T14:40:08.273 に答える