【问题标题】:taking input from button in thymeleaf从百里香叶中的按钮获取输入
【发布时间】:2018-07-11 07:34:21
【问题描述】:

我正在向用户显示一个包含一些详细信息的表单,然后用户单击批准和拒绝。在后端,我想把它放在一个属性中——userAction,它可以是“批准”或“拒绝”。

如何向用户单击的按钮添加输入?然后这个输入是对象 requestDto 的一部分。

<form th:action="@{/mission/store/{uuid}(uuid=${uuid})}" th:object="${requestDto}" method="post" class="mission_form">
  <div class="wizard-header">
    <h3 class="wizard-title">
      Approve Mission
    </h3>
    <h5>Should you chose to accept this mission, press approve.</h5>
  </div>

  <div class="wizard-footer">
    <!--<div class="pull-right">-->
    <input type='button' class="btn btn-success" name='approve' value='Approve' />
    <!--</div>-->
    <div class="pull-left">
      <input type='button' th:field="*{}" class='btn btn-danger' name='previous' value='Decline' />
    </div>
    <div class="clearfix"></div>
  </div>
</form>

【问题讨论】:

    标签: html spring spring-mvc thymeleaf


    【解决方案1】:

    首先定义一个合适的DataTransferObject:

    public class MyRequestDto {
       private String userAction;
       // don't forget getters and setters
    }
    

    然后将该类的对象添加到您的模型中

    // if you are return a M&V-object:
    ModelAndView mv = new ModelAndView("viewName")
    ModelAndView.addObject("requestDto", new MyRequestDto());
    
    // if you define a Model-Object as input-parameter:
    Model.addAttribute("requestDto", new MyRequestDto());
    

    定义这样的表单(我使用了按钮元素)。重点是不要使用 th:field 属性:

    <form th:action="...." method="POST" th:object="${requestDto}">
        <button name="userAction" value="approve" >Approve</button>
        <button name="userAction" value="reject" >Reject</button>
    </form>
    

    通过将它添加到您的控制器输入参数(处理发布请求的控制器)来接收 DataTransferObject:

    ... @Valid RequestDto requestDto, BindingResult bindingResult, ....

    现在您可以访问 requestDto 的 userAction-Attribute。如果单击第一个按钮,则值为批准,如果单击第二个按钮,则值为拒绝。首先可以通过检查 bindingResults.hasErrors() 来检查是否存在绑定错误。

    【讨论】:

    • 按钮标签和输入标签一样吗?也许是一个愚蠢的问题,我没有经常使用 html。
    • 我不会在这里使用 。 Type="button" 通常用于激活 javascript 功能,但您正试图向控制器发送一些东西。因此使用 type="submit" 或 button-elements ...。看起来你正在使用 twitters bootstrap。因此,您可以定义像 这样的按钮
    猜你喜欢
    • 2023-03-09
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 2016-08-14
    相关资源
    最近更新 更多