Methode Objekt als Parameterübergabe

moon0815

Mitglied
Guten Abend Community,
ich hoffe jemand kann mir einen Tipp oder Hilfestellung bei folgendem Problem geben.

In meinem Servlet wird eine Methode aufgerufen um eine Detailliste eines Artikels zu printen.
In der Methode wird durch Methoden Dinge wie Name, Id, Price ect. aufgerufen.

Leider bekomme ich immer eine null excpetion, da das Artikel Objekt nicht als Parameter in der printMethode ankommt.
Jemand eine Idee was ich tun kann?

mit besten Grüßen
 
Danke für den Hinweis.
Java:
public class ArticleServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    private Shop shop = new Shop();

    private PrintWriter out;

    private Article article;

   

    public void init() {


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            out = response.getWriter();
            String articleId = request.getParameter("ArticleId");
          
            out.println("<html>");
            out.println("<head>");
            out.println("<title>ArticleInfo</title>");
            out.println("</head>");

            out.println("<body>" );
            out.println("<p> test </p>");
            out.println(articleId);
            printArticle(article);

    }
  
    private void printArticle(Article article) {      
        Set<Article> catalog = shop.getArticles();          
        String name = article.getName();
        float price = article.getPrice();
      
      
        out.println("<table>");
            out.println("<tr>");
            out.println("<td>");
            out.println("<p>" + (name) + "</p>");
            out.println("<p>" + (price) + "</p>");
 
Zuletzt bearbeitet:
Dein Shop (gehalten in dem Instanzfeld `shop`) besteht ja wahrscheinlich aus einer Liste von Artikeln. Gegeben nun die `articleId`, müsstest du ja jetzt den Artikel mit dieser Id in deinem Shop heraussuchen. Und das ist dann der Artikel, den du in das HTML rendern müsstest.
 
Hallo httpdigest,
immer wieder eine Freude von dir zu lesen.
Eigentlich würde ich dann gerne den Catalog wie du schon richtig gesagt hast gefüllt mit den Artikeln mit einer for schleife durch laufen und den Artikel, welcher mit meiner request Article Id übereinstimmt heraus nehmen. Nur ist meine request Id String, meine Methode für get.Article int. Kann ich das einfach mit einem Cast lösen?

mit freundlichen Grüßen

Java:
    out = response.getWriter();
            String articleId = request.getParameter("ArticleId");
            Set<Article> catalog = shop.getArticles();
            for (Article article : catalog) {
                article = article.getArticleId(articleId);
            }

Java:
public Article getArticle(int articleId) {
        Article foundArticle = null;

        for (Article article : articles) {
            if (article.getArticleId() == articleId) {
                foundArticle = article;
                break;
            }
        }

        return foundArticle;
    }
 
Es würde sicher mal so gehen:
Java:
public Article getById(int id) {
  for (Article article : shop.getArticles()) {
    if (article.getId() == id) {
      return article;
    }
  }
  return null;
}
Dann weiter im Request abarbeiten:
Java:
String articleId = request.getParameter("ArticleId");
if (articleId != null) {
  int id = Integer.parseInt(articleId);
  Article article = getById(id);
  if (article != null) {
    //HTML rendering of article
    //out. ...
  }
//...
}
 

Zurück
Oben