前端代码 brand.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>品牌管理</title> <meta content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" name="viewport"> <link rel="stylesheet" href="../plugins/bootstrap/css/bootstrap.min.css"> <link rel="stylesheet" href="../plugins/adminLTE/css/AdminLTE.css"> <link rel="stylesheet" href="../plugins/adminLTE/css/skins/_all-skins.min.css"> <link rel="stylesheet" href="../css/style.css"> <script src="../plugins/jQuery/jquery-2.2.3.min.js"></script> <script src="../plugins/bootstrap/js/bootstrap.min.js"></script> <!-- 引入angularJS --> <script src="../plugins/angularjs/angular.min.js"></script> <!-- 分页插件使用 --> <script src="../plugins/angularjs/pagination.js"></script> <link rel="stylesheet" href="../plugins/angularjs/pagination.css"> <script type="text/javascript"> var app = angular.module("pingyougou", [ "pagination" ]); app.controller("brandController", function($scope, $http) { //分页查询品牌列表 //【其实在分页插件内部就有当页面一加载就执行一遍请求的方法调用,所以我们在这块代码中不用再显示的写一遍$scope.reloadList()】 //分页控件配置 /* currentPage: 当前页 totalItems: 总记录数 itemsPerPage: 每页记录数 perPageOptions: [10, 20, 30, 40, 50], 分页选项【就是每页显示几条记录的备选下拉】 onChange: 当页面变更后自动触发的方法 */ $scope.paginationConf = { currentPage : 1, totalItems : 10, itemsPerPage : 10, perPageOptions : [ 10, 20, 30, 40, 50 ], onChange : function() { $scope.reloadList();//重新加载 } }; //刷新列表【因为要频繁使用,避免写很长代码,这里封装成一个方法】 $scope.reloadList = function() { //调用分页请求方法 $scope.findPage($scope.paginationConf.currentPage, $scope.paginationConf.itemsPerPage); } //分页请求方法 $scope.findPage = function(page, size) { $http.get("../brand/findPage.do?page=" + page + "&size=" + size) .success(function(response) { $scope.list = response.rows; //显示当前页数据 $scope.paginationConf.totalItems = response.total;//更新总记录数 }); } //新增方法(为了新增和修改都用同一个方法,将此方法改名为save) $scope.save = function(){ //entity是我们在$scope中自定义的一个ang变量 //默认是新增 var methodName="add"; //不为空说明是修改 if($scope.entity.id != null){ methodName="update"; } $http.post("../brand/"+methodName+".do?",$scope.entity).success( function(response){ if(response.success){ $scope.reloadList();//刷新 }else{ alert(response.message); } } ); } //查询实体 $scope.findOne=function(id){ $http.get("../brand/findOne.do?id="+id).success( function(response){ //利用ang的双向绑定特性,实现前台取值的更新 $scope.entity = response; } ); } }); </script> </head> <body class="hold-transition skin-red sidebar-mini" ng-app="pingyougou" ng-controller="brandController"> <!-- .box-body --> <div class="box-header with-border"> <h3 class="box-title">品牌管理</h3> </div> <div class="box-body"> <!-- 数据表格 --> <div class="table-box"> <!--工具栏--> <div class="pull-left"> <div class="form-group form-inline"> <div class="btn-group"> <!-- ng-click="entity={}" 用于清空上次数据使每次点新建打开的都是干净的表单;因为逻辑简单所以不用封装方法,若逻辑复杂可以封装方法--> <button type="button" class="btn btn-default" title="新建" data-toggle="modal" data-target="#editModal" ng-click="entity={}"> <i class="fa fa-file-o"></i> 新建 </button> <button type="button" class="btn btn-default" title="删除"> <i class="fa fa-trash-o"></i> 删除 </button> <button type="button" class="btn btn-default" title="刷新" onclick="window.location.reload();"> <i class="fa fa-refresh"></i> 刷新 </button> </div> </div> </div> <div class="box-tools pull-right"> <div class="has-feedback"></div> </div> <!--工具栏/--> <!--数据列表--> <table id="dataList" class="table table-bordered table-striped table-hover dataTable"> <thead> <tr> <th class="" style="padding-right: 0px"> <input id="selall" type="checkbox" class="icheckbox_square-blue"> </th> <th class="sorting_asc">品牌ID</th> <th class="sorting">品牌名称</th> <th class="sorting">品牌首字母</th> <th class="text-center">操作</th> </tr> </thead> <tbody> <tr ng-repeat="entity in list"> <td><input type="checkbox"></td> <td>{{entity.id}}</td> <td>{{entity.name}}</td> <td>{{entity.firstChar}}</td> <td class="text-center"> <!-- ng-click="findOne(entity.id) 注意:方法的参数中直接写ang变量及其属性即可不用加任何大括号 --> <button type="button" class="btn bg-olive btn-xs" data-toggle="modal" data-target="#editModal" ng-click="findOne(entity.id)">修改</button> </td> </tr> </tbody> </table> <!-- 分页 --> <tm-pagination conf="paginationConf"></tm-pagination> </div> <!-- 数据表格 /--> </div> <!-- /.box-body --> <!-- 编辑窗口 --> <div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h3 id="myModalLabel">品牌编辑</h3> </div> <div class="modal-body"> <table class="table table-bordered table-striped" width="800px"> <tr><!-- 只要你在当前文本框中填值,那么它就会自动封装到entity变量中的name属性中,这样entity变量就自动产生了 --> <td>品牌名称</td> <td><input class="form-control" placeholder="品牌名称" ng-model="entity.name"> </td> </tr> <tr> <td>首字母</td> <td><input class="form-control" placeholder="首字母" ng-model="entity.firstChar"></td> </tr> </table> </div> <div class="modal-footer"><!-- 用ng-click指令绑定点击时执行ang中定义的方法 --> <button class="btn btn-success" data-dismiss="modal" aria-hidden="true" ng-click="save()">保存</button> <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">关闭</button> </div> </div> </div> </div> </body> </html>
后台:
@RequestMapping("/findOne") public TbBrand findOne(Long id){ return brandService.findOne(id); } @RequestMapping("/update") public Result update(@RequestBody TbBrand brand){ try { brandService.update(brand); return new Result(true, "修改成功"); } catch (Exception e) { e.printStackTrace(); return new Result(false, "修改失败"); } }
原文地址:https://www.cnblogs.com/libin6505/p/10075715.html
时间: 2024-11-08 15:47:54