Создание контроллера, который изменяет переменную в запросе POST через форму (Thymeleaf) - PullRequest
0 голосов
/ 12 октября 2018

У меня был вопрос относительно того, как настроить контроллер для изменения переменной через форму.В настоящее время я использую Thymeleaf для шаблонов, и я следовал документации Spring для настройки моего контроллера.

Прямо сейчас мой контроллер успешно создает новый экземпляр класса "Bill" всякий раз, когда делается запрос ...

@Controller
public class BudgetController {

@Autowired
private BillBook book;

@GetMapping("/")
public String billForm(ModelMap modelMap, Model model) {
    model.addAttribute("bill", new Bill());
    modelMap.put("billName", name);
    return "home";
}

@PostMapping("/")
public String billSubmit(Model model, @ModelAttribute Bill bill) {
      book.addToBillBook(bill);
      return "redirect:/";
}

}

... и передает его в список в классе "BillBook ".

@Component
public class BillBook {
private List<Bill> billList;
private int paycheckTotal;
private int difference;
private int billTotal;


public BillBook() {
    billList = new ArrayList<>();
    paycheckTotal = 0;
    difference = 0;
    billTotal = 0;
}

public void addToBillBook(Bill bill) {
    billList.add(bill);
}

public void setPaycheckTotal(int amount) {
    paycheckTotal = amount;
}

public int getPaycheckTotal () {
    return paycheckTotal;
}

Это делается каждый раз, когда пользователь вводит название счета в форму, которую я структурировал в Thymeleaf.

<h1>Form</h1>

<form action="#" th:action="@{/}" th:object="${bill}" method="post">
    <p>Bill name <input type="text" th:field="*{name}" /></p>
    <p>Bill amount <input type="text" th:field="*{amount}" /></p>
    <p><input type="submit" value="Submit" /> <input type="reset" 
    value="Reset"/></p>
</form>

Я знаю, что до сих порНужно внести некоторые изменения, чтобы сумма также была включена, но сейчас это работает довольно хорошо.

Однако сейчас я хочу разрешить пользователю вводить в форму сумму зарплаты, которая должна храниться в переменной paycheckTotal в классе BillBook.Я хочу, чтобы это было константой, т. Е. Пользователь может отправить только одну зарплату, и каждый раз, когда он вводит новую зарплату, она перезаписывает предыдущую.

Из моего исследования я считаю, что это должно быть сделано черезаннотация @RequestParam.Возможно, что-то вроде этого?

public String billSubmit(Model model, @ModelAttribute Bill bill, 
@RequestParam ("paycheckTotal") int paycheckTotal) {

Но я не уверен, как структурировать это в шаблоне Thymeleaf так, чтобы он сохранялся в переменной paycheckTotal.

Если кто-нибудь сможет мне показатькак это должно быть построено, было бы очень, очень важно.

1 Ответ

0 голосов
/ 12 октября 2018
<form action="#" th:action="@{/}" th:object="${bill}" method="post">
    <p>Bill name <input type="text" th:field="*{name}" /></p>
    <p>Bill amount <input type="text" th:field="*{amount}" /></p>
    <p>Paycheck total <input type="text" th:value="${paycheckTotal}" th:name="paycheckTotal"/></p>
    <p><input type="submit" value="Submit" /> <input type="reset" 
    value="Reset"/></p>
</form>

Если вам нужно значение по умолчанию, вы также можете добавить:

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