常用插件的用法

一. 模型提示

  <!--/*@thymesVar id="stockConfigModel" type="com.yunlei.wx.stockconfig.domain.StockConfig"*/-->
 说明:
 将要在页面上使用的变量,使用此注释进行标识,就可以在html页面获取model的智能提示

二. select 下拉框插件

1.引入select的相关信息

<!-- select2下拉框插件 -->
<div th:fragment="select2-css">
    <link th:href="@{/static/ajax/libs/select2/select2.min.css}" rel="stylesheet"/>
    <link th:href="@{/static/ajax/libs/select2/select2-bootstrap.css}" rel="stylesheet"/>
</div>
<div th:fragment="select2-js">
    <script th:src="@{/static/ajax/libs/select2/select2.min.js}"></script>
</div>

2.使用select2
<select class="js-example-basic-multiple" multiple="multiple" th:field="*{selectedValues}">
    <option th:each="option : ${options}" th:value="${option.id}" th:text="${option.name}"></option>
</select>

3.初始化Select2并回显值 
<script th:inline="javascript">
/*<![CDATA[*/
$(document).ready(function() {
    var selectedValues = /*[[${selectedValues}]]*/; // 从Thymeleaf变量获取已选值
    $('.js-example-basic-multiple').select2({
        placeholder: '选择一个或多个选项',
        data: /*[[${options}]]*/  // 这里传入所有选项数据,以便Select2能正确初始化显示所有选项
    });
    
    // 设置回显已选的值
    $('.js-example-basic-multiple').val(selectedValues).trigger('change');
});
/*]]>*/
</script>

说明:
Thymeleaf变量:确保你的控制器方法返回的模型中包含options(所有选项)和selectedValues(已选的值)。selectedValues应该是一个包含选项ID的数组。

JavaScript处理:在文档加载完毕后,通过.val()方法设置Select2组件的值为已选的值数组,然后触发change事件以确保Select2正确更新显示。

示例控制器方法:

4. 后台代码
@GetMapping("/your-page")
public String yourPage(Model model) {
    List<Option> options = Arrays.asList(new Option(1, "选项1"), new Option(2, "选项2"), new Option(3, "选项3")); // 示例选项数据
    List<Integer> selectedValues = Arrays.asList(1, 3); // 示例已选值
    model.addAttribute("options", options);
    model.addAttribute("selectedValues", selectedValues);
    return "your-template"; // 返回模板名称
}

三. 时间选择器插件

1.展示成时分秒的格式
新增时的HTML
<div class="form-group">
                    <label class="col-sm-2 control-label">每日开始时间:</label>
                    <div class="col-sm-4">
                        <input type="text" class="form-control" id="dailyStartTime" name="dailyStartTime" placeholder="HH:mm:ss" value="00:00:00" readonly>
                    </div>

                    <label class="col-sm-2 control-label">每日结束时间:</label>
                    <div class="col-sm-4">
                        <input type="text" class="form-control" id="dailyEndTime" name="dailyEndTime" placeholder="HH:mm:ss" value="23:59:59" readonly>
                    </div>
</div>

js初始化部分:
    layui.use('laydate', function () {
        var laydate = layui.laydate;

        var startDate = laydate.render({
            elem: '#dailyStartTime',
            max: $('#dailyEndTime').val(),
            type: 'time',
            theme: 'molv',
            trigger: 'click',
            done: function (value, date) {
                // 结束时间大于开始时间
                if (value !== '') {
                    endDate.config.min.hours = date.hours;
                    endDate.config.min.minutes = date.minutes;
                    endDate.config.min.seconds = date.seconds + 1;
                } else {
                    endDate.config.min.hours = '';
                    endDate.config.min.minutes = '';
                    endDate.config.min.dates = '';
                }
            }
        });

        var endDate = laydate.render({
            elem: '#dailyEndTime',
            min: $('#dailyStartTime').val(),
            type: 'time',
            theme: 'molv',
            trigger: 'click',
            done: function (value, date) {
                // 开始时间小于结束时间
                if (value !== '') {
                    startDate.config.max.hours = date.hours;
                    startDate.config.max.minutes = date.minutes;
                    startDate.config.max.seconds = date.seconds - 1;
                } else {
                    startDate.config.max.hours = '';
                    startDate.config.max.minutes = '';
                    startDate.config.max.seconds = '';
                }
            }
        });
    });



修改时的HTML
<div class="form-group">
    <label class="col-sm-2 control-label">每日开始时间:</label>
    <div class="col-sm-4">
          <input type="text" class="form-control" id="dailyStartTime" name="dailyStartTime" placeholder="HH:mm:ss"
                               th:value="*{#temporals.format(activityConfig.dailyStartTime, 'HH:mm:ss')}" readonly>
    </div>

    <label class="col-sm-2 control-label">每日结束时间:</label>
       <div class="col-sm-4">
          <input type="text" class="form-control" id="dailyEndTime" name="dailyEndTime" placeholder="HH:mm:ss"
                               th:value="*{#temporals.format(activityConfig.dailyEndTime, 'HH:mm:ss')}" readonly>
    </div>
</div>



2.展示成按时间和日期格式

新增时html:
<div class="form-group">
                    <label class="col-sm-2 control-label">活动开始时间:</label>
                    <div class="col-sm-4">
                        <input type="text" class="form-control" id="effectiveTime" name="effectiveTime"
                               value=""
                               onFocus="WdatePicker({minDate:'#F{$dp.$D(\'effectiveTime\')||\'%y-%M-%d\'}',maxDate:'#F{$dp.$D(\'effectiveTime\')}',dateFmt:'yyyy-MM-dd HH:mm:ss',startDate:'%y-%M-%d 00:00:00'})"
                               placeholder="点击选择开始时间" readonly/>
                    </div>

                    <label class="col-sm-2 control-label">活动结束时间:</label>
                    <div class="col-sm-4">
                        <input type="text" class="form-control" id="expireTime" name="expireTime"
                               value=""
                               onFocus="WdatePicker({minDate:'#F{$dp.$D(\'effectiveTime\')||\'%y-%M-%d\'}',dateFmt:'yyyy-MM-dd HH:mm:ss',startDate:'%y-%M-%d 23:59:59'})"
                               placeholder="点击选择结束时间" readonly/>
                    </div>
</div>




修改时html:
<div class="form-group">
                    <label class="col-sm-2 control-label">开始时间:</label>
                    <div class="col-sm-4">
                        <input type="text" class="form-control" id="effectiveTime" name="effectiveTime"
                               th:value="${#dates.format(activityConfig.effectiveTime, 'yyyy-MM-dd HH:mm:ss')}"
                               onFocus="WdatePicker({minDate:'%y-%M-%d',maxDate:'#F{$dp.$D(\'effectiveTime\')}',dateFmt:'yyyy-MM-dd HH:mm:ss',startDate:'%y-%M-%d 00:00:00'})"
                               placeholder="点击选择开始时间" readonly/>
                    </div>

                    <label class="col-sm-2 control-label">结束时间:</label>
                    <div class="col-sm-4">
                        <input type="text" class="form-control" id="expireTime" name="expireTime"
                               th:value="${#dates.format(activityConfig.expireTime, 'yyyy-MM-dd HH:mm:ss')}"
                               onFocus="WdatePicker({minDate:'#F{$dp.$D(\'effectiveTime\')}',dateFmt:'yyyy-MM-dd HH:mm:ss',startDate:'%y-%M-%d 23:59:59'})"
                               placeholder="点击选择结束时间" readonly/>
                    </div>
                </div>

说明:
新增的时候,开始时间的 <code></code>