Отображение в HTML с весны до MySQL - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь отобразить данные из базы данных в приложении Spring.

<div class="container-fluid">
    <h1>Welcome</h1>
    <p>Some text</p>
</div>
<ul>
    <!--/@thymesVar id="film" type="java.util.List<com.example.project1.accessToData.model.Film>"/-->
    <li th:each ="film:${film}">
       <span th:text="${film}"></span>
    </li>
</ul>

public FilmIndexControler(FilmService filmService) {
    this.filmService = filmService;
}

    @GetMapping
    String showFilms(Model model){
        Iterable<Film> film = filmService.findAll();
        model.addAttribute("film",film);
        return "index";
}

public class Film {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotEmpty(message="Cant be empty")
private String title;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate productionYear;
private String descryption;
@NotEmpty (message="Cant be empty")
private String link}



    public Iterable<Film> findAll () {
    return this.filmRepository.findAll();
}

Когда я пытаюсь отобразить их на сайте, ничего, связанного с Spring, не происходит. Я не вижу фильмы в html.

@RestController

@ RequestMapping ("/ api / film") publi c class FilmApi {

private static final Logger logger = LoggerFactory.getLogger(FilmApi.class);
private final FilmManager filmManager;


@Autowired
public FilmApi(final FilmManager filmManager) {
    this.filmManager = filmManager;

}

@GetMapping(value = "/lista",params = {"!sort", "!page", "!size"} )
public ResponseEntity<Iterable<Film>> getAll(){
    logger.warn("Lista filmów");
    return ResponseEntity.ok(this.filmManager.findAll());
}


@GetMapping
public ResponseEntity<List<Film>>  findFilm(@Param("title") String title){
    return ResponseEntity.ok(this.filmManager.findFilm(title));
}

@PostMapping
public ResponseEntity<Film> addFilm(@RequestBody Film film){
    this.filmManager.save(film);
    return ResponseEntity.noContent().build();
}

@PutMapping("/{id}")
public ResponseEntity<?> updateFilm(@PathVariable Long id,@RequestBody Film film){
    if (!this.filmManager.exist(id)){
        return  ResponseEntity.notFound().build();
    }
    film.setId(id);
    this.filmManager.save(film);
    return ResponseEntity.noContent().build();
}

@DeleteMapping
public void deleteFilm(@RequestParam Long index){
    if (!this.filmManager.exist(index)){
          ResponseEntity.notFound().build();
    }
    this.filmManager.deleteById(index);
    ResponseEntity.noContent().build();
}

}

Хорошо, я добавил контроллер api. Когда я ввожу localhostapi: 8080 / api / film / lista, отображаются все данные. Если вам еще что-нибудь понадобится, я скоро добавлю.

1 Ответ

0 голосов
/ 26 мая 2020

изменить имя переменной с film на films в контроллере:

model.addAttribute("films",film);

и в html файле:

<li th:each ="film: ${films}">
...