Отображение URL в контроллере (удаление данных из связанных таблиц) Spring Boot - PullRequest
0 голосов
/ 26 декабря 2018

Я изучаю Spring, и у меня проблема с отображением URL, когда я хочу удалить данные из таблицы.Я не понимаю, какой URL я должен напечатать, чтобы перенаправить меня к моей таблице снова.Его легко удалить из несвязанной таблицы, потому что отображение URL будет похоже на ("/charList"), но в связанной таблице я должен быть перенаправлен на отображение как return "notebook/chract/{id}";.Но он перенаправляет меня на ID того, что было удалено, и это ошибка.Я действительно не знаю, как правильно объяснить это по-английски, потому что я не являюсь носителем языка.Я надеюсь, вы понимаете мою проблему.Ниже приведены некоторые классы:

@Controller
public class TabCharsController {

final private TabRepository tabRepository;
final private TabCharsRepository tabCharsRepository;
final private ElectronicCharsNameRepository electronicCharsNameRepository;
final private ElectronicCharsValueRepository electronicCharsValueRepository;

public TabCharsController(TabRepository tabRepository,
                          TabCharsRepository tabCharsRepository,
                          ElectronicCharsNameRepository electronicCharsNameRepository,
                          ElectronicCharsValueRepository electronicCharsValueRepository) {
    this.tabRepository = tabRepository;
    this.tabCharsRepository = tabCharsRepository;
    this.electronicCharsNameRepository = electronicCharsNameRepository;
    this.electronicCharsValueRepository = electronicCharsValueRepository;
}

@GetMapping("tab/{id}/characts")
public String tabCharList(@PathVariable Long id, Model model) throws 
Exception{

    Tab tab = tabRepository.findById(id).orElseThrow(() -> new 
Exception("PostId " + id + " not found"));
    List<ElectronicCharactsName> elCharList = 
electronicCharsNameRepository.findAll();
    List<ElectronicCharactsValue> elCharValueList = 
electronicCharsValueRepository.findAll();
    List<TabChars> tabChars = tab.getCharacts();
    model.addAttribute("model", tab.getModel());
    model.addAttribute("tabChars", tabChars);
    model.addAttribute("elCharList", elCharList);
    model.addAttribute("elCharValueList", elCharValueList);
    return "tab/tabCharList";
}

@GetMapping("/tab/characts/{id}/delete")
public String deleteTab(@PathVariable("id") TabChars tabChars){
    tabCharsRepository.delete(tabChars);
    return "redirect:/tab/{id}/characts"; //THIS REDIRECT IS INCORRECT
}

Модель:

@Entity
@Table(name = "tabChars")
public class TabChars {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;


private String name;
private String value;

@ManyToOne
@JoinColumn(name = "tab_id")
private Tab tab;

public TabChars() {
}

public TabChars(String name, String value, Tab tab) {
    this.name = name;
    this.value = value;
    this.tab = tab;
}

public Tab getTab() {
    return tab;
}

public void setTab(Tab tab) {
    this.tab = tab;
}

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 getValue() {
    return value;
}

public void setValue(String value) {
    this.value = value;
}
}

Вид:

<#import "../parts/common.ftl" as c>
<@c.page>
<h3>${model}</h3>
<div class="col-3" id="add_form">
<form method="post" action="/tab/${id}/characts">
    <div class="form-group">
    <select name="name" class="form-control">
        <#list elCharList as elect>
            <option>${elect.charName}</option>
        </#list>
    </select>
    </div>
    <div class="form-group">
    <select name="value" class="form-control">
        <#list elCharValueList as elect>
            <option>${elect.charValue}</option>
        </#list>
    </select>
    </div>
    <input type="hidden" name="id" value="${id}" class="form-control">
    <input type="hidden" name="_csrf" value="${_csrf.token}">
    <button type="submit" class="btn btn-primary form-control">Add</button>
</form>
</div>
<div>
<table class="table">
    <thead class="thead-dark">
    <tr>
        <th>Name</th>
        <th>Value</th>
        <th>Edit</th>
        <th>Delete</th>
    </tr>
    </thead>
        <#list tabChars as char>
        <tr>
            <td>${char.name}</td>
            <td>${char.value}</td>
            <td><a href="/tabCharact/${char.id}">Edit</a></td>
            <td><a href="/tab/characts/${char.id}/delete">Delete</a></td> //HERE
        </tr>
        </#list>
</table>
</div>
</@c.page>

Итак, что я должен набрать в методе TabCharsController deleteTab в RETURN?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...