Multiple lines per write in JSF?

with file array myfaces, is it possible to have 2 lines for each entry? my simple table with one row looks like this:

<h:dataTable id="somelist" value="#{MyBean.somelist}" var="item">
    <h:column>
        <f:facet name="header">
            <h:outputText value="ID"/>
        </f:facet>
        <h:outputText value="#{item.id}"/>
    </h:column>
</h:dataTable>

      

+1


source to share


1 answer


Yes, in this case. You can manipulate the value associated with the outputText with the DataModel .

public class TwoRowModel extends DataModel {

    private List<Pair> values = initData();
    private int index = -1;

    private List<Pair> initData() {
        List<Pair> list = new ArrayList<Pair>();
        for (int i = 0; i < 5; i++) {
            Pair pair = new Pair();
            pair.key = "Key " + i;
            pair.value = "Value " + i;
            list.add(pair);
        }
        return list;
    }

    @Override
    public int getRowCount() {
        return values.size() * 2;
    }

    @Override
    public Object getRowData() {
        Pair pair = values.get(index / 2);
        if (index % 2 == 0) {
            return pair.key;
        } else {
            return pair.value;
        }
    }

    @Override
    public int getRowIndex() {
        return index;
    }

    @Override
    public Object getWrappedData() {
        throw new UnsupportedOperationException("Demo code");
    }

    @Override
    public boolean isRowAvailable() {
        int realIndex = index / 2;
        if (realIndex < 0) {
            return false;
        }
        if (realIndex >= values.size()) {
            return false;
        }
        return true;
    }

    @Override
    public void setRowIndex(int idx) {
        this.index = idx;
    }

    @Override
    public void setWrappedData(Object value) {
        throw new UnsupportedOperationException("Demo code");
    }

    class Pair {
        public String key;
        public String value;
    }

}

      



In this demo code, the return value is just the one that will be displayed:

    <h:dataTable id="somelist" value="#{twoRowModel}" var="item">
        <h:column>
            <f:facet name="header">
                <h:outputText value="ID" />
            </f:facet>
            <h:outputText value="#{item}" />
        </h:column>
    </h:dataTable>

      

+1


source







All Articles