Avatar billede kibaki Nybegynder
13. februar 2009 - 21:04 Der er 11 kommentarer

mvc arkitektur fejler

Jeg har lavet en program der henter data fra databasen og skriver dem på skærm. Jeg har anvendt MVC arkitektur hvor der er en controller klass, DAO, model og JSp siden. Jeg også har en tld fil der kalder mit controller klass til generere dynamisk data fra databasen. Problem er at jeg kan ikke få data vist på skærmen. Det viser ingenting. Er der nogen der kan hjælp mig med den?
Avatar billede arne_v Ekspert
13. februar 2009 - 21:08 #1
Vi skal nok se:
- din JSP side som skal vise data
- hvad der faktisk vises inkl. fejlbesked
- evt. fejlbesked fra din servers log
for at kunen sige hvor problemet ligger.
Avatar billede kibaki Nybegynder
13. februar 2009 - 21:21 #2
Det er mit jsp siden.....

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@  taglib uri = "/WEB-INF/debugdata.tld" prefix="debug"%>

<html>



<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>EC Power A/S Debug Info data</title>
</head>
<body>

    <table border="0" cellpadding="0" width="600" height="10" align="center" cellspacing="1" >
        <tr>
            <th valign="top" width="15%">  Opkaldstid</th>
            <th valign="top" width="55%">  DebugInfo</th>
            <th valign="top" width="30%">  AnlaegId</th>
            <th valign= "top" width="10%"> Kvittering</th>
        </tr>
    </table>
   
    <table border="1" cellpadding="0" width="600" height="500" align="center" cellspacing="1" >
        <tr>
           
            <td align="center" width="15%"><debug:debuginfo type="OPKDATO"></debug:debuginfo></td>
            <td align="center" width="55%"><debug:debuginfo type="DEBUGINFO"></td>
            <td align="center" width="30%"><debug:debuginfo type="ANLAEGID"></td>
            <td align="center"><input type="Checkbox" name="sms"></td>
           
        <tr>
       
    </table>


</body>
</html>


og det er mit kontroller klass....


package dk.ecpower.tags.kvittering;

import dk.ecpower.kernel.exceptions.WrongInputParameterException;
import dk.ecpower.kernel.debuginfo.Kvittering;
import dk.ecpower.kernel.debuginfo.KvitteringManager;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import dk.ecpower.tags.ECTag;
import javax.servlet.http.*;

import java.io.IOException;
import java.util.*;

public class DebugInfoServlet extends ECTag{ 
   
    static final long serialVersionUID = 1L;
    private String type = "";
    Kvittering kvitt = new Kvittering();
   
                /*Check that the input parameter is the one that is expected*/
    public void setType(String type) throws WrongInputParameterException {
    if (type != null) {
        if ((!type.equals("ID")) && (!type.equals("ANLAEGID")) && (!type.equals("OPKDATO")) && (!type.equals("DEBUGINFO")))
        throw new WrongInputParameterException(this.getClass(), type);
    } else
        throw new WrongInputParameterException(this.getClass(), type);
    this.type = type;
    }
   
                        /*Set the attributes key/value pair*/
    protected void handleHttpRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.getSession().setAttribute("id", kvitt );
    }
   
                            /*Handle the tag file*/
    public int doStartTag() throws JspException {
               
        try {
                JspWriter out = pageContext.getOut();
            if (getRequest().getAttribute("id") != null) {

                kvitt = (Kvittering)getRequest().getAttribute("id");
                if(type.equals("ID")){
                    out.print(kvitt.getId());
                }else if(type.equals("OPKDATO")){
                  out.print(kvitt.getOpkdato());
                }else if(type.equals("ANLAEGID")){
                out.print(kvitt.getAnlaegnr());
                }else if (type.equals("DEBUGINFO")){
                out.print(kvitt.getdebuginfo());
                }
            }
            else{ 
                Enumeration enum = getRequest().getAttributeNames();
                    while (enum.hasMoreElements()) {
                            out.print(enum.nextElement().toString());
                    }
            }    //out.print("Hello World....");
            return EVAL_PAGE;
          }
        catch (Exception ex) {
           
            ex.printStackTrace();
        }
        return EVAL_PAGE;
    }
}
Avatar billede arne_v Ekspert
13. februar 2009 - 21:40 #3
Og fejl ?
Avatar billede kibaki Nybegynder
13. februar 2009 - 21:50 #4
det printer ingenting på skærmen.
Avatar billede arne_v Ekspert
13. februar 2009 - 21:57 #5
Hvad vises der i show source i browseren ?

Og er der nogen fejl i serverens log fil ?
Avatar billede kibaki Nybegynder
13. februar 2009 - 22:19 #6
Log filen viser at program er startet men det printer ikke noget fejl. Jeg er lidt i tvivl vis der er en nøgle når jeg kalder getAttribute metode. GetAttrributeNames i catch printer ingenting på browseren.
Avatar billede arne_v Ekspert
15. februar 2009 - 05:01 #7
Der er mange ting jeg ikke forstår ved den kode.

1)  Den bør udskrive enten noget til browser eller en fejl i loggen.

2)  Hvad er output ?

3)  Hvorfor er der noget servlet i tag kode ??

4)  Hvofor returneres der EVAL_PAGE i doStartTag ?? (den bruges i doEndTag)
Avatar billede kibaki Nybegynder
18. februar 2009 - 13:46 #8
Sådan. Jeg kan nu se hvor er fejlen. Det viser at der er en nullpointerexception.. Men jeg kan ikke førstår hvorfor der er en nullpointerexception selv om jeg kan se mit bean klasse henter data fra databasen
Avatar billede arne_v Ekspert
19. februar 2009 - 01:36 #9
Har du ikke en stack trace på den NullPointerException så vi kan se hvor den sker ?
Avatar billede kibaki Nybegynder
19. februar 2009 - 15:53 #10
Hej igen. Jeg har en stor fremskridt på mit projekt. Jeg løst det der med nullpointerexception fejl men har ikke fået det til print på browseren. Hvis jeg initilaliser alle variable i bean klasse med dummy værdi og kontroller klass som følgende

if (getRequest().getAttribute("id") != null) {    til

if (getRequest().getAttribute("id") == null) {

det printer alle dummy variable. Det betyder at problem nu er i setAttribute metode. Hvis jeg sætter attributes i doPost(...), det hjælper ikke noget. Har du ide om hvor jeg kan gøre for at løse det der problem så jeg kan fik data printed ud på browseren?
Avatar billede arne_v Ekspert
20. februar 2009 - 03:17 #11
Så er vi vist tilbage til mit spørgsmål #3 !

Hvad skal kalde handleHttpRequest ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester