course management bei application


newUser()

Neues Mitglied
Hallo zusammen,

ich habe ein System bei dem Kurse angelegt werden können und man diesen dann (vorausgesetzt das Passwort ist korrekt) auch beitreten kann. Jedoch funktioniert dies nur für einen User, sobald ein zweiter diesem beitreten will, funktioniert es nicht und er bleibt ewig auf der gleichen Seite (joinCourse). Es muss etwas mit dem zweiten Abschnitt im Java Code zu tun haben, wo überprüft wird, ob der Nutzer das Passwort korrekt eingegeben hat.

Der relevante Teil der joinCourse Seite:
HTML:
<div class = "container" style="padding-top: 160px" align="center">
    <div class = "panel panel-default" style="background-color: rgba(52,73,94,0.7); width: 550px; margin-top: 70px">
        <p></p>
        <div class = "panel-body">
            <div class="panel-heading">
                <p><b style=" font-size: 25px; color: #ffffff ; border-bottom: 4px solid #e8491d ; margin: 0 auto ; opacity: 0.7" th:text="'Join the course: ' + ${course.name}"></b></p>
            </div>
            <form th:action="@{/joinCourse(courseName=${course.name})}" th:object="${course}" method="post" autocomplete="off">
                <label style="color: #ffffff" th:text="'Password of the course'">Password of the Course</label>
                <input style="height: 30px; width: 300px; position: relative" th:placeholder="'Enter course password ...'" th:field="*{coursePassword}" name="coursePassword" id="coursePassword" type="password" class="form-control"/><br/>
                <button id="button9" name="submit" type="submit" value="/joinCourse" th:text="'Join'" class="btn btn-default">Join</button> &nbsp;
                <button id="button10" name="reset" type="reset" th:text="'Reset'" class="btn btn-default">Reset</button>
            </form>
        </div>
    </div>
</div>
der dazugehörige Java Controller:
Java:
/**
* Handles POST requests target at the joinCourse page
*
* @param coursePassword
* @return the joinedCourse page
*/
@RequestMapping(value = "/joinCourse", method = RequestMethod.POST)
public String joinCourse(@RequestParam(value = "courseName") String name,
                         @RequestParam(value = "coursePassword") String coursePassword,
                         @Valid @ModelAttribute(value = "course") Course selectedCourse, BindingResult result,
                         Map<String, Object> model){

  //checks if the current user is already a member of the
  for(User user : courseService.findCourseByName(name).members){
    if(user.equals(userService.getCurrentUser())){
      model.put("currentUser", userService.getCurrentUser());
      model.put("courses", courseService.getAllCourses());
      List<Course> relevantCourses = new ArrayList<>(); //list of all courses where the current user is a member
      for(Course element : courseService.getAllCourses()){
        for(User theUser : element.members){
          //check if the user is a member of the course
          if(theUser.equals(userService.getCurrentUser())){
            relevantCourses.add(element);
          }
        }
      }
      model.put("currentUser", userService.getCurrentUser());
      model.put("courses", courseService.getAllCourses());
      model.put("relevantCourses", relevantCourses);
      return "overview";
    }
  }

  //checks if the password fits to the course
  if(bCryptPasswordEncoder.matches(coursePassword, courseService.findCourseByName(name).getCoursePassword())){
    Course course = courseService.findCourseByName(name);
    course.members.add(userService.getCurrentUser());
    courseService.persistCourse(course);

    model.put("currentUser", userService.getCurrentUser());
    model.put("courses", courseService.getAllCourses());
    List<Course> relevantCourses = new ArrayList<>(); //list of all courses where the current user is a member
    for(Course element : courseService.getAllCourses()){
      for(User user : element.members){
        //check if the user is a member of the course
        if(user.getUsername().equals(userService.getCurrentUser().getUsername())){
          relevantCourses.add(element);
        }
      }
    }
    model.put("relevantCourses", relevantCourses);
    return "overview";
  }

  model.put("course", courseService.findCourseByName(name));
  return "joinCourse";
}
Da der Nutzer immer bei joinCourse verbleibt treffen beide if Bedingungen nicht zu (wobei das bei der ersten ja auch gewünscht ist). Das heißt, dass bei der Kontrolle des Passworts, bzw. dem zweiten if-Abschnitt irgendetwas nicht richtig funktioniert. Das wundert mich, da es beim ersten mal (wenn sich der erste Nutzer anmeldet) noch korrekt funktioniert.

Danke schon mal für eure Hilfe

Gruß
Patrick
 

Hinweis: Wenn du jetzt Java lernen möchtest, dann schau dir diese kurze Präsentation hier an (hier klicken!)
Sichere dir hier den Zugriff auf umfangreiches Java-Know How und starte richtig durch!

Hinweis: Wenn du jetzt Java lernen möchtest, dann schau dir diese kurze Präsentation hier an (hier klicken!)
Sichere dir hier den Zugriff auf umfangreiches Java-Know How und starte richtig durch!

Passende Stellenanzeigen aus deiner Region:


Neue Themen

Oben