Добавить команду админом

80
23 февраля 2022, 03:40

Учусь использовать thymeleaf, пока идет туго. Есть admin, только он может добавить новую команду, т е надо создать форму, где надо ввести имя команды и нажать кнопку добавить команду

admin.html

<form action="#" th:action="@{/admin}" th:object="${team}" method="post">
    <p>Add Team: <input type="text" th:field="*{name}" /></p>
    <p><input type="submit" value="addTeam" />
</form>

Правильно ли я понимаю,что,что я написал -

th:action="@{/admin}" - на странице admina

th:object="${team} - из класса Team

method="post" - "запости"

Add Team: <input type="text" th:field="*{name}" - текстовое поле с именем(т е team.name)

input type="submit" value="addTeam" кнопка addTeam

Team

@Entity
@Table(name="team")
public class Team  {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    Long id;
    @Column
    String name;
    @Column
    String url;
    @Lob
    @Column(name = "avatar",nullable = true,columnDefinition="BLOB")
    String avatar;

    @OneToMany(mappedBy="team",cascade = CascadeType.ALL, orphanRemoval = true)
    @JsonIgnore
    Set<Users> users = new HashSet<>();
    public Team() {
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public String getAvatar() {
        return avatar;
    }
    public void setAvatar(String avatar) {
        this.avatar = avatar;
    }

    public Set<Users> getUsers() {
        return users;
    }
    public void setUsers(Set<Users> users) {
        this.users = users;
    }
}

AdminController

@Controller//RestController
public class AdminController {


@RequestMapping(value = "/admin/team", method = RequestMethod.POST,produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE })
    public ResponseEntity<Team> addTeam(@RequestBody Team team)  {
        Team newTeam = new Team();
        newTeam.setName(team.getName());
        newTeam.setUrl(team.getUrl());
        newTeam.setAvatar(team.getAvatar());
        newTeam  = teamRepository.save(newTeam);
        return new ResponseEntity<Team>(newTeam, HttpStatus.OK);
    }
    .....
      @RequestMapping(value = "/admin", method = RequestMethod.GET)
        public String adminPage(Model model) {
            model.addAttribute("admin",new Team());
            return "admin";
        }

Добавлю ошибки

org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/admin.html]")
at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]

.....
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'Team' available as request attribute
Answer 1

надо было создать и добавить форму в admin

public class TeamForm {
    private String name;
    private String url;
    public TeamForm() {
    }
    public TeamForm(String name, String url) {
        this.name = name;
        this.url = url;
    }
    public TeamForm(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}

В контролере

 @RequestMapping(value = "/admin", method = RequestMethod.GET)
    public String adminPage(Model model) {
        model.addAttribute("teamForm",new TeamForm());
        model.addAttribute("eventForm",new EventForm());
        return "admin";
    }
 @RequestMapping(value = "/admin/team" , method = RequestMethod.GET)
    public String teamList(Model model) {
        model.addAttribute("teamForm", allTeams());
        return "teamList";
    }

и teamList.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>Team List</h1>
<br/><br/>
<div>
    <table border="1">
        <tr>
            <th>Team Name</th>
            <th>Team Url</th>
        </tr>
        <tr th:each ="tm : ${teamForm}">
            <td th:utext="${tm.name}">...</td>
            <td th:utext="${tm.url}">...</td>
        </tr>
    </table>
</div>
<button type="button" onclick="window.history.go(-1);">Back</button>
</body>
</html>
READ ALSO
Загрузка картинки в WP через php

Загрузка картинки в WP через php

Делаю скрипт, который будет загружать картинку в библиотеку медиафайловДвижок WordPress, но скрипт(самопис), который выполняет загрузку, к движку...

73
Как подключить phpQuery к yii2?

Как подключить phpQuery к yii2?

Как подключить библиотеку phpQuery к yii2 через composer? Объясните поподробнее пожалуйста))))) Заранее благодарю за ответ))

157