Jak wyświetlić tablicę w JSF

0

Witam

Chciałbym poprosić o pomoc w wyświetleniu tablicy na stronie jsf.
Kod:

<?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://java.sun.com/jsf/html">
    <h:head>
        <title>Rejestracja wiadomości</title>
    </h:head>
    <h:body>
        <h:form>
            <table>
                <tr>
                    <td>Wiadomosc</td>
                    <td>
                        <h:inputText label="Wiadomosc"
                                     id="wiadomosc" value="#{Wiadomosc.wiadomosc}"
                                     required="" />
                        <h:message for="wiadomosc" />
                    </td>
                </tr>
            </table>
            <p><h:messages /></p>
            <p><h:commandButton value="Dodaj" action="#{ListaWiadomosci.dodajWiadomosc(Wiadomosc.wiadomosc)}" /></p>
            <p><h:commandButton value="Wyswietl" action="#{ListaWiadomosci.wyswietlWiadomosci}" /></p>
        </h:form>
    </h:body>
</html>
package paczka;

import javax.faces.bean.ManagedBean;
//import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;

/**
 *
 * @author
 */
@ManagedBean(name="Wiadomosc")
@SessionScoped
public class Wiadomosc {
    protected String wiadomosc;
    protected int licznik=0;
    //private ArrayList<Wiadomosc> lista = new ArrayList<Wiadomosc>();
    //dodanie elementu testowego
    //koniec dodanie elementu testowego
    //public ArrayList<Wiadomosc> getLista() {
    //    return lista;
    //}

    //public void setLista(ArrayList<Wiadomosc> lista) {
    //    this.lista = lista;
    //}

    public Wiadomosc(){
    }

    public Wiadomosc(String wiadomosc) {
        this.wiadomosc = wiadomosc;
    }

    public int getLicznik() {
        return licznik;
    }

    public void setLicznik(int licznik) {
        this.licznik = licznik;
    }

    public String getWiadomosc() {
        return wiadomosc;
    }

    public void setWiadomosc(String wiadomosc) {
        this.wiadomosc = wiadomosc;
    }

}
package paczka;

import java.util.ArrayList;
import javax.faces.bean.ManagedBean;
//import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
/**
 *
 * @author 
 */
@ManagedBean(name="ListaWiadomosci")
@SessionScoped
public class ListaWiadomosci {
    //Wiadomosc wiadomosc = new Wiadomosc();
    private ArrayList<Wiadomosc> lista = new ArrayList<Wiadomosc>();

    public ArrayList<Wiadomosc> getLista() {
        return lista;
    }

    public void setLista(ArrayList<Wiadomosc> lista) {
        this.lista = lista;
    }
    public String dodajWiadomosc(String wiad){
        String zwrotka = null;
        Wiadomosc wiadomosc = new Wiadomosc(wiad);
        if(lista.add(wiadomosc)==true){
            //lista.add(wiadomosc);
            wiadomosc.licznik++;
            zwrotka="dodane";
        }else
        {
         zwrotka="niedodane";
        }

        return zwrotka;
    }
    public String wyswietlWiadomosci(){
        return "wyswietl";
    }
}
<?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://java.sun.com/jsf/html">
    <h:head>
        <title>Dodane</title>
    </h:head>
    <h:body>
        Dodane:
        <h:outputText value="#{Wiadomosc.wiadomosc}"/>
        <p><h:outputText value="#{ListaWiadomosci.lista}"/></p>
    </h:body>
</html>
<?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://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Wyświetl</title>
    </h:head>
    <h:body>
        Lista
        <h:dataTable id="Table" value="#{ListaWiadomosci.lista}" var="item" />
        <f:facet name="header">
            <h:outputText value="Wiadomosci" />
        </f:facet>
        <h:column>
            <f:facet name="header">
                <h:outputText value="Wiadomosci" />
            </f:facet>
            <h:outputText value="#{item}" />
        </h:column>
    </h:body>
</html>

Na stronie Dodane widać, że lista się powiększa, niestety nie udaje mi się jej wyświetlić na stronie Wyświetl.

Pozdrawiam

0

Zdefiniuj "nie udaje mi się jej wyświetlić". Nie każdy ma czas kopiować twoje kody i je uruchamiać. Napisz co się dzieje ...
Edit: Z tego co widzę to wcale nic nie wyświetlasz, bo domknąłeś sobie tag dataTable a on powinien obejmować twoje h:column
Powinno być tak:

<h:dataTable id="Table" value="#{ListaWiadomosci.lista}" var="item">
        <f:facet name="header">
            <h:outputText value="Wiadomosci" />
        </f:facet>
        <h:column>
            <f:facet name="header">
                <h:outputText value="Wiadomosci" />
            </f:facet>
            <h:outputText value="#{item}" />
        </h:column>
</<h:dataTable>
0

druga sprawa to poco definiujesz dwa razy header. Ten facet powinien siedziec w h

<h:dataTable id="Table" value="#{ListaWiadomosci.lista}" var="item">
        <h:column>
            <f:facet name="header">
                <h:outputText value="Wiadomosci" />
            </f:facet>
            <h:outputText value="#{item}" />
        </h:column>
</<h:dataTable>
0

Witam

Rzeczywiście tablica wyświetla się prawidłowo.

Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1