2016-05-06 11 views
0

Ich bin neu in Thymoleaf und Spring Boot, also weiß ich nicht wirklich, was ich suche, um mein Problem zu lösen. Ich habe mehrere Benutzer in einer Liste auf meiner Website angezeigt. Wenn ich auf einen der Benutzer klicke, möchte ich die Benutzerprofilseite anzeigen.thymeleaf spezifisches Benutzerprofil anzeigen

Die Liste sieht wie folgt aus:

<ul> 
    <li th:each="section : ${sections}"> 
     <a href="overviewDivision.html?id=1" th:href="@{/overviewDivision?id=1}"> 
      <span th:text="${section.name}">Bereich3</span> 
     </a> 
     <ul> 
      <li th:each="person : ${personSectionService.getPersonsBySectionId(section.id)}"> 
       <a href="overviewEmployee.html?id= + person.id" th:href="@{/overviewEmployee?id= + person.id}"> 
        <span th:text="${person.firstName + ' ' + person.lastName}"> 
        </span> 
       </a> 
      </li> 
     </ul> 
    </li> 
</ul> 

Dies ist mein Controller:

@RequestMapping(value = "/overviewEmployee", method = RequestMethod.GET) 
public String overviewEmployee(Model model) { 
    model.addAttribute("sections", sectionService.getAllSections()); 
    model.addAttribute("personSectionService", personSectionService); 
    model.addAttribute("currentPerson", personService.getById(1)); 
    return "overviewEmployee"; 
} 

Auf der Profilseite I currentPerson.firstName verwenden und so weiter, die Informationen über den Benutzer zu erhalten. Also meine Frage ist, wie ändere ich die currentPerson in die zuletzt angeklickte Person in der Liste? Oder mache ich es total falsch?

Antwort

1

Sie müssen 2 Handler dafür haben: einen, um Ihre Liste anzuzeigen, und einen, um das Detail zu erhalten. Ersteres sollte nicht currentPerson in dem Modell festlegen, da Sie diese Information noch nicht haben.

Ihre Handler sollte wie folgt aussehen:

@RequestMapping(value = "/employees", method = RequestMethod.GET) 
public String overviewEmployee(Model model) { 
    model.addAttribute("sections", sectionService.getAllSections()); 
    model.addAttribute("personSectionService", personSectionService); 
    return "employee-list"; 
} 

@RequestMapping(value = "/overviewEmployee", method = RequestMethod.GET) 
public String overviewEmployee(Model model, @RequestParameter long id) { 
    model.addAttribute("currentPerson", personService.getById(id)); 
    return "overviewEmployee"; 
} 

(Beachten Sie die Verwendung von @RequestParameter)

Ich gehe davon aus Ihrer id ein long ist, und dass es zwingend notwendig ist.