JSF Datatable spuckt Inhalt zwei mal aus

Mh... der Fehler muss eigentlich irgendwo im JSP liegen, wobei ich momentan keinen finden kann. Kannst du noch ein wenig mehr von der JSP preis geben? Weil an dem kleinen Schnipsel liegt das Problem meiner Ansicht nach nicht.

Ok, hier das ganze datatable:

Java:
<h:dataTable id="forum" value="#{Forum__frontend.forum_ansicht}" var="item" bgcolor="#F1F1F1" border="10" cellpadding="5" cellspacing="3" first="#{Forum__frontend.first}" rows="5" width="100%" dir="LTR" frame="hsides" rules="all" summary="This is a JSF code to create dataTable.">
                        <f:facet name="header">
                            <%
                            if(request.getParameter("forumID") == null && request.getParameter("threadID") == null) {
                                %><h:outputText value="#{Forum__frontend.rows} Foren"></h:outputText><%
                            } else if(request.getParameter("forumID") != null && request.getParameter("threadID") == null) {
                                %><h:outputText value="#{Forum__frontend.rows} Themen"></h:outputText><%
                            } else if(request.getParameter("forumID") != null && request.getParameter("threadID") != null) {
                                %><h:outputText value="#{Forum__frontend.rows} Beiträge"></h:outputText><%
                            }
                            %>
                        </f:facet>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value=""></h:outputText>
                            </f:facet>
                            <%
                            if(request.getParameter("forumID") == null && request.getParameter("threadID") == null) {
                                %><h:outputText value=""></h:outputText><%
                            } else if(request.getParameter("forumID") != null && request.getParameter("threadID") == null) {
                                %><h:outputText value=""></h:outputText><%
                            } else if(request.getParameter("forumID") != null && request.getParameter("threadID") != null) {
                                %><h:outputText value="#{item.username}"></h:outputText><br /><h:graphicImage alt="Profil-Image" url="./resources/images/user/#{item.profil_image}" width="70" height="60" rendered="#{item.profil_image != null}"></h:graphicImage><h:graphicImage alt="Profil-Image" url="./resources/images/user/default.jpg" rendered="#{item.profil_image eq null}"></h:graphicImage><%
                            }
                            %>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="Titel"></h:outputText>
                            </f:facet>
                            <%
                            if(request.getParameter("forumID") == null && request.getParameter("threadID") == null) {
                                %><h:form id="commandLinkForum"><h:commandLink value="#{item.titel}" action="#{Forum__frontend.goToForum}"><f:param name="forumid" value="#{item.id}" /></h:commandLink></h:form><%
                            } else if(request.getParameter("forumID") != null && request.getParameter("threadID") == null) {
                                %><h:form id="commandLinkThread"><h:commandLink value="#{item.titel}" action="#{Forum__frontend.goToThread}"><f:param name="forumid" value="#{item.forumid}" /><f:param name="threadid" value="#{item.id}" /></h:commandLink></h:form><%
                            } else if(request.getParameter("forumID") != null && request.getParameter("threadID") != null) {
                                %>
                                <h2><h:outputText value="#{item.datum}"></h:outputText>, <h:outputText value="#{item.zeit}"></h:outputText> | <h:outputText value="#{item.titel}"></h:outputText></h2>
                                <h:outputText value="#{item.message}" escape="false"></h:outputText>
                                <br />
                                <h:outputLink value="forum.faces?edit=#{item.id}" rendered="#{item.username eq Login_Logout.username}"><h:outputText value="Bearbeiten"></h:outputText></h:outputLink>
                                <%
                            }
                            %>
                        </h:column>
                        <%
                        if(request.getParameter("forumID") == null && request.getParameter("threadID") == null) {
                            %>
                            <h:column>
                                <f:facet name="header">
                                    <h:outputText value="Anzahl Themen" />
                                </f:facet>
                                <h:outputText value="1"></h:outputText>
                            </h:column>
                            <h:column>
                                <f:facet name="header">
                                    <h:outputText value="Moderatoren"></h:outputText>
                                </f:facet>
                                <h:outputText value="admin"></h:outputText>
                            </h:column>
                            <%
                        } else if(request.getParameter("forumID") != null && request.getParameter("threadID") == null) {
                            %>
                            <h:column>
                                <f:facet name="header">
                                    <h:outputText value="Anzahl Beitr&auml;ge" escape="false"></h:outputText>
                                </f:facet>
                                <h:outputText value="1"></h:outputText>
                            </h:column>
                            <%
                        } else if(request.getParameter("forumID") != null && request.getParameter("threadID") != null) {
                            %>
                            
                            <%
                        }
                        %>
                        <f:facet name="footer">
                            <h:panelGroup>
                                <h:form>
                                    <h:commandButton value="Zurück" action="#{Forum__frontend.zurueck}" rendered="#{pricelistBean.zurueckVisible}" />
                                    <h:commandButton value="Weiter" action="#{Forum__frontend.weiter}" rendered="#{pricelistBean.weiterVisible}" />
                                </h:form>
                                Test Anzahl Reihen: <h:outputText value="#{Forum__frontend.test}"></h:outputText>
                            </h:panelGroup>
                        </f:facet>
                    </h:dataTable>
 
Hallo,

mir wurde vor ca. einer Stunde ein Tipp gegeben, das mein Array falsch aufgebaut ist!

Damit die anderen, die an der gleichen Stelle hängen auch die Lösung haben, werde ich den Quelltext hier mal posten:

ForumBean: (wichtig: Zeile 85, 87, 104, 196)
Java:
package de.pcpowerplay.frontend.forum;

import java.io.IOException;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author purzel
 */
public class forum implements Serializable {
    /**
     * Datenbank
     */
    final String db_driver = "com.mysql.jdbc.Driver";
    final String db_url = "jdbc:mysql://000.000.000.000:3306/pcpowerplay";
    final String db_username = "username";
    final String db_password = "password";

    int first;
    int rows;
    String timestamp;
    String[] timestamp_ = new String[6];
    String datum;
    String zeit;
    ResultSet rs;
    private List array = new ArrayList();

    HttpServletRequest req = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
    HttpServletResponse res = (HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();

    public int count() {
        try{
            Class.forName(db_driver);
            try{
                Connection db = DriverManager.getConnection(db_url, db_username, db_password);
                if(req.getParameter("forumID") == null && req.getParameter("threadID") == null) {
                    String rowStatement = "SELECT id FROM forum_foren";
                    PreparedStatement row_prepStmt = db.prepareStatement(rowStatement);
                    ResultSet row_rs = row_prepStmt.executeQuery();
                    row_rs.next();
                    row_rs.last();
                    rows = row_rs.getRow();
                } else if(req.getParameter("forumID") != null && Integer.parseInt(req.getParameter("forumID")) > 0 && req.getParameter("threadID") == null) {
                    String rowStatement = "SELECT id, forenid FROM forum_threads WHERE forenid = ?";
                    PreparedStatement row_prepStmt = db.prepareStatement(rowStatement);
                    row_prepStmt.setString(1, req.getParameter("forumID"));
                    ResultSet row_rs = row_prepStmt.executeQuery();
                    row_rs.next();
                    row_rs.last();
                    rows = row_rs.getRow();
                } else if(req.getParameter("forumID") != null && Integer.parseInt(req.getParameter("forumID")) > 0  && req.getParameter("threadID") != null && Integer.parseInt(req.getParameter("threadID")) > 0) {
                    String rowStatement = "SELECT id, forenid, threadid FROM forum_messages WHERE forenid = ? AND threadid = ?";
                    PreparedStatement row_prepStmt = db.prepareStatement(rowStatement);
                    row_prepStmt.setString(1, req.getParameter("forumID"));
                    row_prepStmt.setString(2, req.getParameter("threadID"));
                    ResultSet row_rs = row_prepStmt.executeQuery();
                    row_rs.next();
                    row_rs.last();
                    rows = row_rs.getRow();
                }
                rs.close();
                db.close();
            } catch(Exception db_error) {
                System.out.println(db_error);
            }
        } catch(Exception db_driver_error) {
            System.out.println(db_driver_error);
        }
        return rows;
    }

    private forum_spalten[] forum = new forum_spalten[count()];

    public forum_spalten[] getForum() {
        int i = 0;
        try{
            Class.forName(db_driver);
            try{
                Connection db = DriverManager.getConnection(db_url, db_username, db_password);
                if(req.getParameter("forumID") == null && req.getParameter("threadID") == null) {
                    /*String rowStatement = "SELECT id FROM forum_foren";
                    PreparedStatement row_prepStmt = db.prepareStatement(rowStatement);
                    ResultSet row_rs = row_prepStmt.executeQuery();
                    row_rs.next();
                    row_rs.last();
                    rows = row_rs.getRow();*/
                    String selectStatement = "SELECT id, titel FROM forum_foren";
                    PreparedStatement select_prepStmt = db.prepareStatement(selectStatement);
                    rs = select_prepStmt.executeQuery();
                    while(rs.next()) {
                        forum[i] = new forum_spalten(rs.getInt("id"), rs.getString("titel"));
                        array.add(i, new forum_spalten(rs.getInt("id"), rs.getString("titel")));
                        i++;
                    }
                } else if(req.getParameter("forumID") != null && Integer.parseInt(req.getParameter("forumID")) > 0 && req.getParameter("threadID") == null) {
                    /*String rowStatement = "SELECT id, forenid FROM forum_threads WHERE forenid = ?";
                    PreparedStatement row_prepStmt = db.prepareStatement(rowStatement);
                    row_prepStmt.setString(1, req.getParameter("forumID"));
                    ResultSet row_rs = row_prepStmt.executeQuery();
                    row_rs.next();
                    row_rs.last();
                    rows = row_rs.getRow();*/
                    String selectStatement = "SELECT id, titel, forenid FROM forum_threads WHERE forenid = ? ORDER BY timestamp_edit DESC";
                    PreparedStatement select_prepStmt = db.prepareStatement(selectStatement);
                    select_prepStmt.setString(1, req.getParameter("forumID"));
                    rs = select_prepStmt.executeQuery();
                    while(rs.next()) {
                        array.add(i, new forum_spalten(rs.getInt("id"), rs.getString("titel"), rs.getInt("forenid")));
                        i++;
                    }
                } else if(req.getParameter("forumID") != null && Integer.parseInt(req.getParameter("forumID")) > 0  && req.getParameter("threadID") != null && Integer.parseInt(req.getParameter("threadID")) > 0) {
                    /*String rowStatement = "SELECT id, forenid, threadid FROM forum_messages WHERE forenid = ? AND threadid = ?";
                    PreparedStatement row_prepStmt = db.prepareStatement(rowStatement);
                    row_prepStmt.setString(1, req.getParameter("forumID"));
                    row_prepStmt.setString(2, req.getParameter("threadID"));
                    ResultSet row_rs = row_prepStmt.executeQuery();
                    row_rs.next();
                    row_rs.last();
                    rows = row_rs.getRow();*/
                    String selectStatement = "SELECT forum_messages.id AS forum_messages_id, forum_messages.titel, forum_messages.forenid, forum_messages.threadid, forum_messages.message, forum_messages.userid, forum_messages.userid_edit, forum_messages.timestamp_create, forum_messages.timestamp_edit, users.id AS forum_users_id, users.username, users.profil_image FROM forum_messages, users WHERE forum_messages.forenid = ? AND forum_messages.threadid = ? AND forum_messages.userid = users.id ORDER BY forum_messages.timestamp_create ASC";
                    PreparedStatement select_prepStmt = db.prepareStatement(selectStatement);
                    select_prepStmt.setString(1, req.getParameter("forumID"));
                    select_prepStmt.setString(2, req.getParameter("threadID"));
                    rs = select_prepStmt.executeQuery();
                    while(rs.next()) {
                        timestamp = new Date(rs.getLong("timestamp_create")*1000).toString();
                        timestamp_ = timestamp.split(" ");
                        if(timestamp_[0].equals("Sun")) {
                            timestamp_[0] = "Sonntag";
                        } else if(timestamp_[0].equals("Mon")) {
                            timestamp_[0] = "Montag";
                        } else if(timestamp_[0].equals("Thu")) {
                            timestamp_[0] = "Dienstag";
                        } else if(timestamp_[0].equals("Wed")) {
                            timestamp_[0] = "Mittwoch";
                        } else if(timestamp_[0].equals("Thur")) {
                            timestamp_[0] = "Donnerstag";
                        } else if (timestamp_[0].equals("Fri")) {
                            timestamp_[0] = "Freitag";
                        } else if(timestamp_[0].equals("Sat")) {
                            timestamp_[0] = "Samstag";
                        }
                        if(timestamp_[1].equals("Jan")) {
                            timestamp_[1] = "01";
                        } else if(timestamp_[1].equals("Feb")) {
                            timestamp_[1] = "02";
                        } else if(timestamp_[1].equals("Mar")) {
                            timestamp_[1] = "03";
                        } else if(timestamp_[1].equals("Apr")) {
                            timestamp_[1] = "04";
                        } else if(timestamp_[1].equals("May")) {
                            timestamp_[1] = "05";
                        } else if (timestamp_[1].equals("Jun")) {
                            timestamp_[1] = "06";
                        } else if(timestamp_[1].equals("July")) {
                            timestamp_[1] = "07";
                        } else if(timestamp_[1].equals("Aug")) {
                            timestamp_[1] = "08";
                        } else if(timestamp_[1].equals("Sept")) {
                            timestamp_[1] = "09";
                        } else if(timestamp_[1].equals("Oct")) {
                            timestamp_[1] = "10";
                        } else if(timestamp_[1].equals("Nov")) {
                            timestamp_[1] = "11";
                        } else if(timestamp_[1].equals("Dec")) {
                            timestamp_[1] = "12";
                        }
                        datum = timestamp_[0] + ", " + timestamp_[2] + "." + timestamp_[1] + "." + timestamp_[5];
                        zeit = timestamp_[3];
                        array.add(i, new forum_spalten(rs.getInt("forum_messages_id"), datum, zeit, rs.getString("forum_messages.titel"), rs.getString("forum_messages.message"), rs.getString("users.username"), rs.getString("users.profil_image")));
                        i++;
                    }
                }
                rs.close();
                db.close();
            } catch(Exception db_error) {
                System.out.println(db_error);
            }
        } catch(Exception db_driver_error) {
            System.out.println(db_driver_error);
        }
        //return array;
        return forum;
    }

    public void goToForum() {
        FacesContext context = FacesContext.getCurrentInstance();
        Map requestMap = context.getExternalContext().getRequestParameterMap();
        String s_forumid = (String)requestMap.get("forumid");
        int forumid = Integer.parseInt(s_forumid);
        try {
            FacesContext.getCurrentInstance().getExternalContext().redirect("forum.faces?forumID=" + forumid);
        } catch (IOException ex) {
            Logger.getLogger(forum.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void goToThread() {
        FacesContext context = FacesContext.getCurrentInstance();
        Map requestMap = context.getExternalContext().getRequestParameterMap();
        String s_forumid = (String)requestMap.get("forumid");
        String s_threadid = (String)requestMap.get("threadid");
        int forumid = Integer.parseInt(s_forumid);
        int threadid = Integer.parseInt(s_threadid);
        try {
            FacesContext.getCurrentInstance().getExternalContext().redirect("forum.faces?forumID=" + forumid + "&threadID=" + threadid);
        } catch (IOException ex) {
            Logger.getLogger(forum.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public String weiter() {
        first = first + 9;
        if(first > array.size()) {
            first = array.size() - 9;
        }
        return null;
    }

    public String zurueck() {
        first = first - 9;
        if(first < 0) {
            first = 0;
        }
        return null;
    }

    public boolean weiterVisible() {
        if(first > array.size()) {
            return false;
        } else {
            return true;
        }
    }
    
    public boolean zurueckVisible() {
        if(first < 0) {
            return false;
        } else {
            return true;
        }
    }

    public int getRows() {
        return rows;
    }

    public void setRows(int rows) {
        this.rows = rows;
    }

    public int getFirst() {
        return first;
    }

    public int getTest() {
        return array.size();
    }

    public String getForumid() {
        return req.getParameter("forumID");
    }
    
    public void goToNewTopic() {
        try {
            FacesContext.getCurrentInstance().getExternalContext().redirect("forum__new_topic.faces");
        } catch (IOException ex) {
            Logger.getLogger(forum.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void goToNewArticle() {
        try {
            FacesContext.getCurrentInstance().getExternalContext().redirect("forum__new_article.faces");
        } catch (IOException ex) {
            Logger.getLogger(forum.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

forum.jsp: (Auszug)
HTML:
<h:dataTable id="forum" value="#{Forum__frontend.forum}" var="item" bgcolor="#F1F1F1" border="10" cellpadding="5" cellspacing="3" first="#{Forum__frontend.first}" rows="15" width="100%" dir="LTR" frame="hsides" rules="all" summary="This is a JSF code to create dataTable.">
                        <f:facet name="header">
                            <%
                            if(request.getParameter("forumID") == null && request.getParameter("threadID") == null) {
                                %><h:outputText value="#{Forum__frontend.rows} Foren"></h:outputText><%
                            } else if(request.getParameter("forumID") != null && request.getParameter("threadID") == null) {
                                %><h:outputText value="#{Forum__frontend.rows} Themen"></h:outputText><%
                            } else if(request.getParameter("forumID") != null && request.getParameter("threadID") != null) {
                                %><h:outputText value="#{Forum__frontend.rows} Beiträge"></h:outputText><%
                            }
                            %>
                        </f:facet>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value=""></h:outputText>
                            </f:facet>
                            <%
                            if(request.getParameter("forumID") == null && request.getParameter("threadID") == null) {
                                %><h:outputText value=""></h:outputText><%
                            } else if(request.getParameter("forumID") != null && request.getParameter("threadID") == null) {
                                %><h:outputText value=""></h:outputText><%
                            } else if(request.getParameter("forumID") != null && request.getParameter("threadID") != null) {
                                %><h:outputText value="#{item.username}"></h:outputText><br /><h:graphicImage alt="Profil-Image" url="./resources/images/user/#{item.profil_image}" width="70" height="60" rendered="#{item.profil_image != null}"></h:graphicImage><h:graphicImage alt="Profil-Image" url="./resources/images/user/default.jpg" rendered="#{item.profil_image eq null}"></h:graphicImage><%
                            }
                            %>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="Titel"></h:outputText>
                            </f:facet>
                            <%
                            if(request.getParameter("forumID") == null && request.getParameter("threadID") == null) {
                                %><h:form id="commandLinkForum"><h:commandLink value="#{item.titel}" action="#{Forum__frontend.goToForum}"><f:param name="forumid" value="#{item.id}" /></h:commandLink></h:form><%
                            } else if(request.getParameter("forumID") != null && request.getParameter("threadID") == null) {
                                %><h:form id="commandLinkThread"><h:commandLink value="#{item.titel}" action="#{Forum__frontend.goToThread}"><f:param name="forumid" value="#{item.forumid}" /><f:param name="threadid" value="#{item.id}" /></h:commandLink></h:form><%
                            } else if(request.getParameter("forumID") != null && request.getParameter("threadID") != null) {
                                %>
                                <h2><h:outputText value="#{item.datum}"></h:outputText>, <h:outputText value="#{item.zeit}"></h:outputText> | <h:outputText value="#{item.titel}"></h:outputText></h2>
                                <h:outputText value="#{item.message}" escape="false"></h:outputText>
                                <br />
                                <h:outputLink value="forum.faces?edit=#{item.id}" rendered="#{item.username eq Login_Logout.username}"><h:outputText value="Bearbeiten"></h:outputText></h:outputLink>
                                <%
                            }
                            %>
                        </h:column>
                        <%
                        if(request.getParameter("forumID") == null && request.getParameter("threadID") == null) {
                            %>
                            <h:column>
                                <f:facet name="header">
                                    <h:outputText value="Anzahl Themen" />
                                </f:facet>
                                <h:outputText value="1"></h:outputText>
                            </h:column>
                            <h:column>
                                <f:facet name="header">
                                    <h:outputText value="Moderatoren"></h:outputText>
                                </f:facet>
                                <h:outputText value="admin"></h:outputText>
                            </h:column>
                            <%
                        } else if(request.getParameter("forumID") != null && request.getParameter("threadID") == null) {
                            %>
                            <h:column>
                                <f:facet name="header">
                                    <h:outputText value="Anzahl Beitr&auml;ge" escape="false"></h:outputText>
                                </f:facet>
                                <h:outputText value="1"></h:outputText>
                            </h:column>
                            <%
                        } else if(request.getParameter("forumID") != null && request.getParameter("threadID") != null) {
                            %>
                            
                            <%
                        }
                        %>
                        <f:facet name="footer">
                            <h:panelGroup>
                                <h:form>
                                    <h:commandButton value="Zurück" action="#{Forum__frontend.zurueck}" rendered="#{Forum__frontend.zurueckVisible}" />
                                    <h:commandButton value="Weiter" action="#{Forum__frontend.weiter}" rendered="#{Forum__frontend.weiterVisible}" />
                                </h:form>
                                Test Anzahl Reihen: <h:outputText value="#{Forum__frontend.test}"></h:outputText>
                            </h:panelGroup>
                        </f:facet>
                    </h:dataTable>
                    <br /><br />

MfG

Masterpurzel
 
Zuletzt bearbeitet:
Zurück