深入实践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 新建电影视图设计效果图

相关文章
|
2月前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段四:学术分析 AI 项目 RAG 落地指南:基于 Spring AI 的本地与阿里云知识库实践
本文介绍RAG(检索增强生成)技术,结合Spring AI与本地及云知识库实现学术分析AI应用,利用阿里云Qwen-Plus模型提升回答准确性与可信度。
1198 90
AI 超级智能体全栈项目阶段四:学术分析 AI 项目 RAG 落地指南:基于 Spring AI 的本地与阿里云知识库实践
|
4月前
|
前端开发 Java API
利用 Spring WebFlux 技术打造高效非阻塞 API 的完整开发方案与实践技巧
本文介绍了如何使用Spring WebFlux构建高效、可扩展的非阻塞API,涵盖响应式编程核心概念、技术方案设计及具体实现示例,适用于高并发场景下的API开发。
409 0
|
2月前
|
人工智能 监控 Java
Spring AI Alibaba实践|后台定时Agent
基于Spring AI Alibaba框架,可构建自主运行的AI Agent,突破传统Chat模式限制,支持定时任务、事件响应与人工协同,实现数据采集、分析到决策的自动化闭环,提升企业智能化效率。
Spring AI Alibaba实践|后台定时Agent
|
2月前
|
XML JSON Java
【SpringBoot(三)】从请求到响应再到视图解析与模板引擎,本文带你领悟SpringBoot请求接收全流程!
Springboot专栏第三章,从请求的接收到视图解析,再到thymeleaf模板引擎的使用! 本文带你领悟SpringBoot请求接收到渲染的使用全流程!
271 3
|
4月前
|
Java 应用服务中间件 开发者
Spring Boot 技术详解与应用实践
本文档旨在全面介绍 Spring Boot 这一广泛应用于现代企业级应用开发的框架。内容将涵盖 Spring Boot 的核心概念、核心特性、项目自动生成与结构解析、基础功能实现(如 RESTful API、数据访问)、配置管理以及最终的构建与部署。通过本文档,读者将能够理解 Spring Boot 如何简化 Spring 应用的初始搭建和开发过程,并掌握其基本使用方法。
383 2
|
8月前
|
JSON 前端开发 Java
深入理解 Spring Boot 中日期时间格式化:@DateTimeFormat 与 @JsonFormat 完整实践
在 Spring Boot 开发中,日期时间格式化是前后端交互的常见痛点。本文详细解析了 **@DateTimeFormat** 和 **@JsonFormat** 两个注解的用法,分别用于将前端传入的字符串解析为 Java 时间对象,以及将时间对象序列化为指定格式返回给前端。通过完整示例代码,展示了从数据接收、业务处理到结果返回的全流程,并总结了解决时区问题和全局配置的最佳实践,助你高效处理日期时间需求。
1103 0
|
8月前
|
存储 Java 数据库
Spring Boot 注册登录系统:问题总结与优化实践
在Spring Boot开发中,注册登录模块常面临数据库设计、密码加密、权限配置及用户体验等问题。本文以便利店销售系统为例,详细解析四大类问题:数据库字段约束(如默认值缺失)、密码加密(明文存储风险)、Spring Security配置(路径权限不当)以及表单交互(数据丢失与提示不足)。通过优化数据库结构、引入BCrypt加密、完善安全配置和改进用户交互,提供了一套全面的解决方案,助力开发者构建更 robust 的系统。
299 0
|
5月前
|
缓存 安全 Java
Spring 框架核心原理与实践解析
本文详解 Spring 框架核心知识,包括 IOC(容器管理对象)与 DI(容器注入依赖),以及通过注解(如 @Service、@Autowired)声明 Bean 和注入依赖的方式。阐述了 Bean 的线程安全(默认单例可能有安全问题,需业务避免共享状态或设为 prototype)、作用域(@Scope 注解,常用 singleton、prototype 等)及完整生命周期(实例化、依赖注入、初始化、销毁等步骤)。 解析了循环依赖的解决机制(三级缓存)、AOP 的概念(公共逻辑抽为切面)、底层动态代理(JDK 与 Cglib 的区别)及项目应用(如日志记录)。介绍了事务的实现(基于 AOP
202 0
|
8月前
|
Java 开发者 微服务
Spring Cloud OpenFeign详解与实践
总结起来说,Spring Cloud OpenFeign提供了一种简单易懂且高效的方式去实现微服务之间通信.它隐藏了许多复杂性,并且允许开发者以声明式方式编写HTTP客户端代码.如果你正在开发基于Spring Cloud 的微服务架构系统,Spring Cloud Open Feign是一个非常好用且强大工具.
591 33