Java Intro to Java Web Development with Spark Bells and Whistles Redirecting

redirect challenge

I don't know what i'm missing to make this work.

com/teamtreehouse/courses/Main.java
package com.teamtreehouse.courses;

import com.teamtreehouse.courses.model.CourseIdea;
import com.teamtreehouse.courses.model.CourseIdeaDAO;
import com.teamtreehouse.courses.model.SimpleCourseIdeaDAO;
import spark.ModelAndView;
import spark.template.handlebars.HandlebarsTemplateEngine;

import java.util.HashMap;
import java.util.Map;

import static spark.Spark.*;

public class Main {
    public static void main(String[] args) {
        staticFileLocation("/public");
        CourseIdeaDAO dao = new SimpleCourseIdeaDAO();

        get("/", (req, res) -> {
            Map<String, String> model = new HashMap<>();
            model.put("username", req.cookie("username"));
            return new ModelAndView(model, "index.hbs");
        }, new HandlebarsTemplateEngine());

        post("/", (req, res) -> {
            Map<String, String> model = new HashMap<>();
            String username = req.queryParams("username");
            res.cookie("username", username);
            model.put("username", username);
            res.redirect("/");
            return null;



        get("/ideas", (req, res) -> {
            Map<String, Object> model = new HashMap<>();
            model.put("ideas", dao.findAll());
            return new ModelAndView(model, "ideas.hbs");
        }, new HandlebarsTemplateEngine());

        post("/ideas", (req, res) -> {
            String title = req.queryParams("title");
            // TODO:csd - This username is tied to the cookie implementation
            CourseIdea courseIdea = new CourseIdea(title,
                    req.cookie("username"));
            dao.add(courseIdea);
            res.redirect("/ideas");
            return null;
        });
    }
}

3 Answers

You didn't close out the post method. You need to add a }); to :

post("/", (req, res) -> {
  Map<String, String> model = new HashMap<>();
  String username = req.queryParams("username");
  res.cookie("username", username);
  model.put("username", username);
  res.redirect("/");
  return null; 

So that it is:

 post("/", (req, res) -> {
            Map<String, String> model = new HashMap<>();
            String username = req.queryParams("username");
            res.cookie("username", username);
            model.put("username", username);
            res.redirect("/");
            return null; });

Thanks Lukas!! Looks like I was also missing /sign-in at the beginning.

Haley Bengtson
Haley Bengtson
Front End Web Development Techdegree Student 14,334 Points

Did you have to change the action="/sign-in" to action="/" ? I had to do that in addition to the redirect code shown above in order for it to work. Otherwise it would direct me to a 404 page saying it had trouble finding 'sign-in'.