深入实践Spring Boot3.4.2 新建视图设计

简介:

3.4.2 新建视图设计

1.?新建对话框设计

新建电影时,在电影主页中打开一个对话框显示新建的操作界面,对话框设计引用了“artDialog.js”的对话框插件,然后编写一个脚本来打开对话框,如代码清单3-17所示。其中“./new”是连接控制器的请求URL,注意这里使用了相对路径,这个URL通过“$.get”请求返回新建电影的HTML页面,请求链接中的ts参数传递的是当前时间,这是为了保证该链接是一个全新的链接,以使浏览器能显示一个最新的内容页面。

代码清单3-17 新建电影对话框设计js编码

function create(){

    $.get("./new",{ts:new Date().getTime()},function(data){

        art.dialog({

            lock:true,

            opacity:0.3,

            title: "新增",

            width:'750px',

            height: 'auto',

            left: '50%',

            top: '50%',

            content:data,

            esc: true,

            init: function(){

                artdialog = this;

            },

            close: function(){

                artdialog = null;

            }

        });

    });

}

2.?新建页面设计

新建电影的页面设计,如代码清单3-18所示,这里只是部分HTML编码,其中的日期控件使用“WdatePicker.js”插件来实现。对于一部电影来说,我们需要输入名称、剧照和日期三个属性,其中剧照的图片下拉列表框使用“imageselect.js”图片下拉列表框插件来实现,并且为了简化设计,剧照中的图片文件使用了预先定义的文件,这里只要选择使用哪一个图片即可。

代码清单3-18 新建电影页面HTML编码

<link th:href="@{/styles/imageselect.css}" rel="stylesheet" type="text/css" />

<script th:src="@{/scripts/imageselect.js}"></script>

<script th:src="@{/scripts/movie/new.js}"></script>

 

<form id="saveForm" action="./save" method="post">

    <table class="addNewInfList">

        <tr>

            <th>名称</th>

            <td><input class="inp-list w-200 clear-mr f-left" type="text"   id=

"name" name="name"  maxlength="120" /></td>

            <th>剧照</th>

            <td width="240">

                <select name="photo" id="photo">

                    <option th:each="file:${files}"

                            th:value="${file}"

                            th:text="${file}">

                    </option>

                </select>

            </td>

        </tr>

        <tr>

            <th>日期</th>

            <td>

                <input  onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})"

type="text" class="inp-list w-200 clear-mr f-left" id="createDate" name="createDate"/>

            </td>

        </tr>

    </table>

    <div class="bottomBtnBox">

        <a class="btn-93X38 saveBtn" href="javascript:void(0)">确定</a>

        <a class="btn-93X38 backBtn" href="javascript: closeDialog()">返回</a>

    </div>

</form>

<script type="text/javascript">

    $(document).ready(function(){

        $('select[name=photo]').ImageSelect({dropdownWidth:425});

    });

</script>

3.?表单验证与提交设计

验证新建电影表单的提交时使用“jquery.validate.min.js”插件中的验证方法来实现,如代码清单3-19所示。保存时调用经典的“$.ajax”方式利用POST方法进行提交,其中headers: {"Content-type": "application/x-www-form-urlencoded;charset=UTF-8"}用于保证数据在传输过程中中文字符的正确性。在表单验证中,只对name和createDate两个属性进行简单的非空验证,表单的参数传递使用一个表单序列化函数serialize()来实现,它将表单控件上的对象序列化为一个个含有“键-值”对的字符串进行提交。

代码清单3-19 新建电影中表单验证和提交的js编码

$(function(){

        $('#saveForm').validate({

                rules: {

            name       :{required:true},

            createDate      :{required:true}

                },messages:{

            name :{required:"必填"},

            createDate :{required:"必填"}

        }

        });

    $('.saveBtn').click(function(){

        if($('#saveForm').valid()){

            $.ajax({

                type: "POST",

                url: "./save",

                data: $("#saveForm").serialize(),

                headers: {"Content-type": "application/x-www-form-urlencoded;

charset=UTF-8"},

                success: function (data) {

                    if (data == 1) {

                        alert("保存成功");

                        pageaction();

                        closeDialog();

                    } else {

                        alert(data);

                    }

                },

                error:function(data){

                    var e;

                    $.each(data,function(v){

                        e += v + " ";

                    });

                    alert(e);

                }

            });

        }else{

            alert('数据验证失败,请检查!');

        }

    });

});

4.?新建视图设计效果

新建电影的视图设计最后的显示效果如图3-3所示。

 

图3-3 新建电影视图设计效果图

相关文章
|
1月前
|
缓存 Java API
【云原生】Spring Cloud Gateway的底层原理与实践方法探究
【云原生】Spring Cloud Gateway的底层原理与实践方法探究
|
2月前
|
安全 Java 数据库
后端进阶之路——万字总结Spring Security与数据库集成实践(五)
后端进阶之路——万字总结Spring Security与数据库集成实践(五)
|
3月前
|
Java 数据库连接 Spring
从零开始,探索Spring框架的魅力与实践
从零开始,探索Spring框架的魅力与实践
|
3月前
|
缓存 NoSQL Java
Spring Cache 缓存原理与 Redis 实践
Spring Cache 缓存原理与 Redis 实践
140 0
|
7月前
|
消息中间件 弹性计算 Java
Rocketmq-spring入门与实践
本场景带您体验如何在 Spring 生态中优雅地使用 Apache RocketMQ,感受最受欢迎业务开发框架与最受欢迎消息平台结合的魅力。
401 0
|
3月前
|
前端开发 安全 Java
Spring Boot项目中VO层设计:选择继承或组合的灵活实践
Spring Boot项目中VO层设计:选择继承或组合的灵活实践
92 0
|
6天前
|
监控 Java 数据库连接
Spring高手之路17——动态代理的艺术与实践
本文深入分析了JDK和CGLIB两种动态代理技术在Spring框架中的应用。讨论了动态代理的基础概念,通过实例展示了如何实现和应用这两种方法,并比较了它们的性能差异及适用场景。进一步,探讨了在动态代理中实现熔断限流和日志监控的策略,以及如何利用动态代理优化Spring应用的设计和功能。
14 6
Spring高手之路17——动态代理的艺术与实践
|
7天前
|
前端开发 Java Spring
数据之桥:深入Spring MVC中传递数据给视图的实用指南
数据之桥:深入Spring MVC中传递数据给视图的实用指南
24 3
|
3月前
|
存储 安全 Java
Spring Security中Token存储与会话管理:解析与实践
Spring Security中Token存储与会话管理:解析与实践
89 0
|
4月前
|
Java Spring
spring boot aop 实践---记录日志
spring boot aop 实践---记录日志
28 0