1.  
  2. <!DOCTYPE html>
  3. <html lang="en">
  4. <head>
  5. <meta charset="UTF-8"/>
  6. <title>总合计</title>
  7. <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"/>
  8. <link rel="stylesheet" href="/css/bootstrap.min.css"/>
  9. <link rel="stylesheet" href="/css/AdminLTE.min.css"/>
  10. <!--<link rel="stylesheet" href="/layui/css/layui.css"/>-->
  11. <link rel="stylesheet" href="/css/skin-blue.min.css"/>
  12. <link rel="stylesheet" href="/css/font-awesome.css"/>
  13. <link rel="stylesheet" href="/js/pilotShop/searchOfficial/css/layui.css"/>
  14.  
  15. <script src="/js/vue.min.js"></script>
  16. <style>
  17.  
  18. .box-headerDis {
  19. display: inline-block;
  20. width: 250px;
  21. }
  22.  
  23. .box-headerDis .totalPayment-title {
  24. font-size: 18px;
  25. }
  26.  
  27. .disFlex {
  28. display: flex;
  29. justify-content: flex-start;
  30. align-items: center;
  31. }
  32.  
  33. .totalPayment-money {
  34. font-size: 18px;
  35. margin: 10px;
  36. }
  37.  
  38. .layui-table-cell {
  39.  
  40. line-height: 23px;
  41. padding: 0px;
  42. position: relative;
  43. overflow: visible;
  44. text-overflow: clip;
  45. white-space: normal;
  46. box-sizing: border-box;
  47. text-align: center;
  48. }
  49.  
  50. .layui-table thead .hei231 th {
  51. height: 231px !important;
  52. }
  53.  
  54. .layui-table-box .layui-table-header .layui-table th {
  55. height: 70px !important;
  56. font-size: 11px;
  57. }
  58.  
  59. .layui-table-fixed .layui-table-header .layui-table th {
  60. height: 140px !important;
  61. font-size: 11px;
  62. }
  63. </style>
  64. </head>
  65.  
  66. <body>
  67. <div class="businessOverview" id="businessOverview">
  68.  
  69. <div class="box-header">
  70. <h3 class="box-title">总统计记录</h3>
  71. </div>
  72. <div class="box-tools" style=" left: 128px;">
  73. <div class="disFlex ">
  74. <div class="input-group input-group-sm" style="padding: 7px;width: 150px;">
  75. <div class="input-group-addon">
  76. <i class="fa fa-calendar"></i>
  77. </div>
  78. <input autocomplete="off" placeholder="选择时间" style=" width: 204px;" type="text" class="layui-input"
  79. id="jt_date"/>
  80. </div>
  81. <div class="demoTable">
  82. 投资方
  83. <div class="layui-inline">
  84. <input autocomplete="off" type="text" placeholder="输入资方名称" v-model="investorName"
  85. class="form-control"/>
  86. </div>
  87. </div>
  88. <div class="demoTable" style="padding-left: 5px;">
  89. 公司名称
  90. <div class="layui-inline">
  91. <input autocomplete="off" type="text" placeholder="输入公司名称" v-model="companyName"
  92. class="form-control"/>
  93. </div>
  94. </div>
  95. <div class="demoTable">
  96. <button class="layui-btn" data-type="reload" v-on:click="SearchInDetail()">搜索</button>
  97. </div>
  98.  
  99. </div>
  100. <!--<button class="" id="btnExport">导出明细</button>-->
  101. </div>
  102.  
  103. <table id="demo" lay-filter="test"></table>
  104.  
  105. </div>
  106. <!--公司ID-->
  107. <script type="text/html" id="companyId">
  108. <a class="layui-table-link" style="font-size: 10px" target="_blank">{{ d.companyId }}</a>
  109. </script>
  110. <!--公司名称-->
  111. <script type="text/html" id="usernameTpl">
  112. {{# if(d.type === 2){ }}
  113. <a class="layui-table-link" style="font-size: 10px" target="_blank">{{ d.companyName }}</a>
  114. {{# } else { }}
  115. <a style="font-size: 10px" target="_blank" >{{ d.companyName }}</a>
  116. {{# } }}
  117. <!--<a href="/thePointsRecord.html?companyId={{d.companyId}}" class="layui-table-link" style="font-size: 10px" target="_blank">{{ d.companyName }}</a>-->
  118. </script>
  119. <!--操作-->
  120. <script type="text/html" id="TheOperatingSubsidiary">
  121. {{# if(d.type === 2){ }}
  122.  
  123. {{# } else { }}
  124. <a target="_blank"><button class="layui-btn" style="height: 30px;line-height: 30px;">明细</button></a>
  125. {{# } }}
  126. </script>
  127. <!--资方利润-->
  128. <script type="text/html" id="ProfitManagement">
  129.  
  130. {{# if(d.ProfitManagement === "NaN"){ }}
  131. <a target="_blank">{{ 0.00 }}</a>
  132. {{# } else { }}
  133. <a target="_blank">{{ d.ProfitManagement }}</a>
  134. {{# } }}
  135. </script>
  136. <!--资方利润 GenerationOfOperating-->
  137. <script type="text/html" id="GenerationOfOperating">
  138.  
  139. {{# if(d.totalBusinessPrincipalShow === "0.00"){ }}
  140. <a target="_blank">{{ 0.00 }}</a>
  141. {{# } else { }}
  142. <a target="_blank">{{ d.GenerationOfOperating }}</a>
  143. {{# } }}
  144. </script>
  145.  
  146. <!-- jQuery 3 -->
  147. <script src="/js/jquery.min.js"></script>
  148. <!--<script src="/layui/layui.js"></script>-->
  149. <script src="/js/pilotShop/searchOfficial/layui.js"></script>
  150. <script src="/js/jquery.table2excel.min.js"></script>
  151. <script src="/js/adminlte.min.js"></script>
  152. <!-- Bootstrap 3.3.7 -->
  153. <script src="/js/bootstrap.min.js"></script>
  154. <script th:inline="javascript">
  155. new Vue({
  156. el: "#businessOverview",
  157. data: {
  158. TotalConsumptionList: [],
  159. companyName: "",
  160. beginDate: "",
  161. endDate: "",
  162. investorName: ""
  163.  
  164. },
  165. filters: {},
  166. // 数据初始化
  167. mounted: function () {
  168. var this_ = this;
  169. this.TotalConsumption()
  170. layui.use('laydate', function () {
  171. var laydate = layui.laydate;
  172. laydate.render({
  173. elem: '#jt_date',//指定元素;
  174. type: 'date',
  175. theme: '3c8dbc',
  176. range: '~',
  177. max: new Date().valueOf(),
  178. done: function (value, date, endDate) {
  179. value = value.split('~');
  180. this_.beginDate = value[0];
  181. this_.endDate = value[1];
  182. if (value == "") {
  183. this_.beginDate = "";
  184. this_.endDate = "";
  185. } else {
  186. this_.beginDate = value[0].replace(/(^\s+)|(\s+$)/g, "");
  187. this_.endDate = value[1].replace(/(^\s+)|(\s+$)/g, "");
  188. }
  189. }
  190. });
  191.  
  192. });
  193. layui.use('table', function () {
  194. var table = layui.table;
  195. // table.exportFile(table.data, data); //data 为该实例中的任意数量的数据
  196. table.render({
  197. elem: '#demo'
  198. , url: '/v1/wx/cs/searchcity/investment/report/company/data/details'
  199. // ,where: {companyName:this_.companyName}
  200. , contentType: 'application/json'
  201. , method: 'POST'
  202. , toolbar: '#toolbarDemo'
  203. , title: '用户数据表'
  204. , height: 715 //容器高度
  205. , page: true //是否显示分页
  206. // , limit: 10 //每页默认显示的数量
  207. , done: function (res, curr, count) {
  208. // console.log(res)
  209. }
  210. , request: {
  211. pageName: 'pageNum' //页码的参数名称,默认:page
  212. , limitName: 'limitNum' //每页数据量的参数名,默认:limit
  213. }
  214. , parseData: function (res) { //res 即为原始返回的数据
  215. res.code = 1;
  216. // res = JSON.stringify(res);
  217. console.log(res)
  218. var resultData = res.data.resultData;
  219. for (var i in resultData) {
  220. // 营业额
  221. resultData[i].turnoverShow = (resultData[i].turnover / 100).toFixed(2);
  222. // 普通会员
  223. resultData[i].totalVipRealPriceShow = (resultData[i].totalVipRealPrice / 100).toFixed(2);
  224.  
  225. // PLUS会员
  226. resultData[i].totalPlusRealPriceShow = (resultData[i].totalPlusRealPrice / 100).toFixed(2);
  227. // 成本 投资合同签约成本(总营业额*合同售卖折扣)
  228. resultData[i].totalContractPrincipalShow = (resultData[i].totalContractPrincipal / 100).toFixed(2);
  229. //成本 官方代运营签约成本(总营业额*代运营折扣)
  230. resultData[i].totalBusinessPrincipalShow = (resultData[i].totalBusinessPrincipal / 100).toFixed(2);
  231.  
  232. // 手续费
  233. resultData[i].wxTotalPayPricePoundage = ((resultData[i].wxTotalPayPrice / 100) * 0.006).toFixed(2);
  234. //业务员的收益
  235. resultData[i].totalSalesmanEarnings = ((resultData[i].totalSalesmanEarningsO / 100) + (resultData[i].totalSalesmanEarningsI / 100)).toFixed(2);
  236. //店长的收益
  237. resultData[i].totalShopManagerEarnings = ((resultData[i].totalShopManagerEarningsO / 100) + (resultData[i].totalShopManagerEarningsI / 100)).toFixed(2);
  238. //收银的收益
  239. resultData[i].totalCashierEarnings = ((resultData[i].totalCashierEarningsO / 100) + (resultData[i].totalCashierEarningsI / 100)).toFixed(2);
  240.  
  241. //实入账 投资合同(营业额*合同购买额度*0.994)
  242. resultData[i].totalContractRealPrice = (resultData[i].totalContractRealPrice / 100).toFixed(2);
  243. //实入账 官方代运营(订单总支付金额*0.994)
  244. resultData[i].RealAccountOfAgentOperation = ((resultData[i].wxTotalPayPrice / 100) * 0.994).toFixed(2);
  245.  
  246. // 总收益(实入账-成本) 投资合同总收益
  247. resultData[i].SmallCapitalCardTotalIncome = (resultData[i].totalContractRealPrice - resultData[i].totalContractPrincipalShow).toFixed(2);
  248.  
  249. // 总收益(实入账-成本) 代运营
  250. resultData[i].GenerationOfOperating = (resultData[i].totalContractPrincipal / 100 - (resultData[i].totalBusinessPrincipal / 100)).toFixed(2);
  251. //总收益(实入账-成本) 官方实际收益
  252. // resultData[i].RealIncome =(((resultData[i].totalVipRealPrice/100)+ (resultData[i].totalPlusRealPrice/100))*0.994- resultData[i].totalContractRealPrice+(resultData[i].totalContractPrincipal/100-(resultData[i].totalBusinessPrincipal/100))+(resultData[i].totalContractPrincipal/100)*(1-(resultData[i].investorProfitsProportion/100))).toFixed(2);
  253. resultData[i].RealIncome = ((resultData[i].totalVipRealPrice/100 + resultData[i].totalPlusRealPrice/100) * 0.994- (resultData[i].totalContractRealPrice)+parseFloat(resultData[i].GenerationOfOperating)+(parseFloat(resultData[i].SmallCapitalCardTotalIncome)*(1 - (resultData[i].investorProfitsProportion / 100)))).toFixed(2);
  254.  
  255. // 利润 资方 微信总支付金额*0.994-银联合同本金除2-资方付给店长等的部分利润
  256. resultData[i].ProfitManagement = (((resultData[i].SmallCapitalCardTotalIncome)*(resultData[i].investorProfitsProportion / 100))-parseFloat(resultData[i].totalCashierEarningsI/100) - parseFloat(resultData[i].totalSalesmanEarningsI/100) - parseFloat(resultData[i].totalShopManagerEarningsI/100)).toFixed(2);
  257.  
  258. // resultData[i].ProfitManagement = ( (resultData[i].totalContractRealPrice - resultData[i].totalContractPrincipalShow) / (resultData[i].investorProfitsProportion / 100) - (resultData[i].totalCashierEarningsI) - (resultData[i].totalSalesmanEarningsI) - (resultData[i].totalShopManagerEarningsI)).toFixed(2);
  259. // 利润 官方
  260. resultData[i].ProfitsTheOfficial = (resultData[i].RealIncome - parseFloat(resultData[i].totalCashierEarningsO/100) - parseFloat(resultData[i].totalSalesmanEarningsO/100) - parseFloat(resultData[i].totalShopManagerEarningsO/100)).toFixed(2);
  261. // console.log(resultData[i].SmallCapitalCardTotalIncome+""+resultData[i].investorProfitsProportion+"-"+resultData[i].totalCashierEarningsI+"-"+resultData[i].totalSalesmanEarningsI+"-"+resultData[i].totalShopManagerEarningsI)
  262. }
  263. return {
  264. "code": res.status, //解析接口状态
  265. "msg": res.message, //解析提示文本
  266. "count": res.data.pageCount, //解析数据长度
  267. "data": res.data.resultData //解析数据列表
  268. };
  269. }
  270. , response: {
  271. statusName: 'code' //规定数据状态的字段名称,默认:code
  272. , statusCode: 200 //规定成功的状态码,默认:0
  273. , msgName: 'message' //规定状态信息的字段名称,默认:msg
  274. , countName: 'count' //规定数据总数的字段名称,默认:count
  275. , dataName: 'data' //规定数据列表的字段名称,默认:data
  276. }
  277. , defaultToolbar: ['filter', 'print', 'exports']
  278. , cols: [[
  279. {type: 'checkbox', fixed: 'left', width: 37, rowspan: 2}
  280. , {field: 'investorName', title: '投资方', fixed: 'left', width: 50, rowspan: 2}
  281. , {
  282. field: 'companyName',
  283. event: 'setSign',
  284. title: '公司名称',
  285. fixed: 'left',
  286. width: 200,
  287. templet: '#usernameTpl',
  288. rowspan: 2
  289. }
  290. , {field: 'turnoverShow', title: '总营业额', width: 120, rowspan: 2}
  291. , {field: 'joinTime', title: '实际支付', colspan: 2}
  292. , {field: 'zone', title: '成本', colspan: 2}
  293. , {field: 'wxTotalPayPricePoundage', title: '手续费(实际支付额*006)', width: 150, rowspan: 2}
  294. , {field: 'zone', title: '实入账', colspan: 2}
  295. , {field: 'zone', title: '总收益(实入账-成本)', width: 80, colspan: 3}
  296. , {field: 'email', title: '补贴', colspan: 3}
  297. , {field: 'email', title: '利润', colspan: 2}
  298. , {field: 'TheOperatingSubsidiary', title: '操作',event: 'setSignTwo', width: 80, rowspan: 2,templet:"#TheOperatingSubsidiary"}
  299. // , {
  300. // field: 'companyId',
  301. // title: '跳页id',
  302. // width: 50,
  303. // templet: "#companyId",
  304. // rowspan: 2,
  305. // style: "display:none"
  306. // }
  307. // , {
  308. // field: 'investmentBuyCreditLineProportion',
  309. // title: '代运营签约折扣',
  310. // width: 80,
  311. // rowspan: 2,
  312. // templet: "#investmentBuyCreditLineProportion",
  313. // style: "display:none"
  314. // }
  315. ], [
  316. {field: 'totalVipRealPriceShow', title: '普通会员总入账', width: 120}
  317. , {field: 'totalPlusRealPriceShow', title: 'PLUS会员总入账', width: 120}
  318.  
  319. , {field: 'totalContractPrincipalShow', title: '投资合同签约成本(总营业额*合同售卖折扣)', width: 130}
  320. , {field: 'totalBusinessPrincipalShow', title: '官方代运营签约成本(总营业额*代运营折扣)', width: 130}
  321. , {field: 'totalContractRealPrice', title: '投资合同(营业额*合同签约售卖折扣*0.994)', width: 130}
  322. , {field: 'RealAccountOfAgentOperation', title: '官方实际支付额(订单总支付金额*0.994)', width: 140}
  323.  
  324. , {field: 'SmallCapitalCardTotalIncome', title: '投资合同总收益', width: 130}
  325. , {field: 'GenerationOfOperating', title: '代运营', width: 130, templet: "#GenerationOfOperating"}
  326. , {field: 'RealIncome', title: '官方实际收益', width: 130}
  327. , {field: 'totalSalesmanEarnings', title: '业务(营业额*业务补贴折扣)', width: 130}
  328. , {field: 'totalCashierEarnings', title: '收银(营业额*收银补贴折扣)', width: 130}
  329. , {field: 'totalShopManagerEarnings', title: '店长(营业额*店长补贴折扣)', width: 130}
  330.  
  331. , {field: 'ProfitManagement', title: '资方', width: 150, templet: "#ProfitManagement"}
  332. , {field: 'ProfitsTheOfficial', title: '官方', width: 150}
  333. ]]
  334.  
  335. });
  336. //单机公司名称
  337. table.on('tool(test)', function (obj) {
  338. var data = obj.data;
  339. if (obj.event === 'setSign') {
  340. // console.log(obj.data.companyId)
  341. if (obj.data.type==2){
  342. localStorage.companyId = obj.data.companyId;//存值
  343. window.location.href = "SearchCityBranchRecords.html?companyId=" + obj.data.companyId; //跳页
  344. }
  345. }
  346. if (obj.event === 'setSignTwo') {
  347. // console.log(obj.data.companyId)
  348. localStorage.restaurantId = obj.data.restaurantId;//存值
  349. window.location.href = "SearchCityCancelAfterVerificationDetails.html?restaurantId=" + obj.data.restaurantId; //跳页
  350. }
  351. });
  352. //工具栏事件
  353. table.on('toolbar(test)', function (obj) {
  354. var checkStatus = table.checkStatus(obj.config.id);
  355. console.log(obj)
  356. switch (obj.event) {
  357. case 'getCheckData':
  358. var data = checkStatus.data;
  359. console.log(checkStatus.data)
  360. //layer.alert(JSON.stringify(data));
  361.  
  362. break;
  363. case 'getCheckLength':
  364. var data = checkStatus.data;
  365. layer.msg('选中了:' + data.length + ' 个');
  366. break;
  367. case 'isAll':
  368. layer.msg(checkStatus.isAll ? '全选' : '未全选')
  369. break;
  370. }
  371. });
  372. });
  373. },
  374. computed: {
  375. pages: function () {
  376. var pag = [];
  377. var current = this.current;
  378. var showItem = this.showItem;
  379. // console.log(current,showItem) //current当前页数 showItem显示条数
  380. if (current >= showItem) { //如果当前的激活的项 小于要显示的条数
  381. //总页数和要显示的条数那个大就显示多少条
  382. var middle = this.current - Math.floor(this.showItem / 2),//从哪里开始
  383. i = this.showItem;
  384.  
  385. if (middle > (this.allpage - this.showItem)) {
  386. middle = (this.allpage - this.showItem) + 1
  387. }
  388. while (i--) {
  389. pag.push(middle++);
  390. }
  391. } else { //当前页数大于显示页数了
  392. var i = Math.min(this.showItem, this.allpage); //显示数据中低的那个
  393. while (i) {
  394. pag.unshift(i--);
  395. }
  396. }
  397. // console.log(current,showItem)
  398. return pag
  399. }
  400. },
  401. methods: {
  402. //单机查询
  403. SearchInDetail: function () {
  404. var this_ = this;
  405. var table = layui.table;
  406. layui.use('table', function () {
  407. console.log(table)
  408. table.reload('demo', {
  409. where: {
  410. companyName: this_.companyName,
  411. beginDate: this_.beginDate,
  412. endDate: this_.endDate,
  413. investorName: this_.investorName,
  414. }
  415. , page: {
  416. curr: 1 //重新从第 1 页开始
  417. }
  418. });
  419. })
  420.  
  421. },
  422. TotalConsumption: function () {
  423. var this_ = this
  424. $.ajax({
  425. type: 'post',
  426. contentType: 'application/json',
  427. url: "/v1/wx/cs/searchcity/investment/report/all/data",
  428. success: function (res) {
  429. // console.log(res)
  430. this_.TotalConsumptionList = res.data
  431. },
  432. error: function (res) {
  433. alert("获取失败")
  434. }
  435. });
  436. }
  437. }
  438. })
  439. </script>
  440. </body>
  441. </html>

新人--使用layui做的表格,复杂表头,固定列,操作单元格数据计算,点击查询重载表格,可以选择部分或者全部导出的更多相关文章

  1. bootstrap-table固定表头固定列

    1.引入 bootstrap依赖于jquery bootstrap-table依赖于bootstrap,所以都需要引入 2. bootstrap-table有两种方式,html.js <tabl ...

  2. CSS开发技巧(二):表格合并边框后的单元格宽度计算

    前言: 分离边框模型和合并边框模型是表格的两种模型,它通过以下属性确定: border-collapse:separate(默认值) | collapse | inherit 当采用分离边框模型时,表 ...

  3. jQuery,Table表头固定插件chromatable存在的问题及解决办法

    在最近的项目中需要将表格的表头固定,搜寻了大量的资料,发现chromatable插件还是比较方便的.但是当我在一个页面中多次使用 chromatable固定对个表格的表头时问题就出现了,首先说明系统的 ...

  4. vue中获取滚动table的可视页面宽度,调整表头与列对齐(每列宽度不都相同)

    mounted() { // 在mounted中监听表格scroll事件 this.$refs.scrollTable.addEventListener( 'scroll',(event) => ...

  5. 浅谈js中如何动态添加表头/表列/表格内容

    我想很多童鞋用js动态向表格中添加数据很熟悉,而且也觉得非常简单!是的,对于写页面的童鞋来说,最喜欢写查询的页面了,动态向表格绑定数据.用for循环就可以轻松搞定. 如果我们的业务需求有所变化,可能我 ...

  6. 纯css实现table表格固定列和表头,中间横向滚动的思路-附案例

    最近做的后台管理系统要处理大量的表格 原项目是采用的for循环加拼接字符串的方式实现;导致js代码一大堆;各种单引号和双引号的嵌套;让人头疼;遂引入vue.js;用v-for做模板渲染;工作量顿时减轻 ...

  7. vue表格实现固定表头首列

    前言 最近在做vue移动端项目,需要做一个可以固定表头首列的表格,而且由于一些原因不能使用任何UI插件,网上找了很久也没什么好方法,所以在解决了问题之后,写下了这篇文章供后来人参考,文章有什么错漏的问 ...

  8. layui 数据表格+分页+搜索+checkbox+缓存选中项数据

    在做数据表格的时候遇到了很多坑, 今天整理一下方便以后使用. 主要功能是使用数据表格, 做分页,做搜索,  还有checkbox,  支持全选. 当选中一些数据的时候, 数据切换页面数据在切换回来后, ...

  9. vue中 表头 th 合并单元格,且表格列数不定的动态渲染方法

    吐槽 今天,在vue中遇到 复杂表格的渲染 ,需要合并表头th的单元格,且合并单元格的那列的表头数据是动态数据,也就是不知道会有多少个表头列,而这几个表头列还分了好几个子表头. 这个需求在js里用Ju ...

随机推荐

  1. 【MVC框架】——什么是MVC框架

    学习了经典三层之后,认为不论什么一种框架都不再是难的.不管如何,都须要连接数据库.业务逻辑处理.显示.其余的无非就是给三层解耦合.解耦合越到位,这个框架就越easy被接受. 百度百科:MVC全名是Mo ...

  2. 一、Redis 基础命令---总括

    1.redis命令不区分大写和小写.可是KEY区分大写和小写. 2.redis-cli -h 127.0.0.1 -p 6379 依据IP/PORT链接服务端 3.redis-server --por ...

  3. ant整合junit自己主动化測试

    一. 使用Junit进行測试 1. Java业务代码: public class HelloWorld { // 測试返回"world" public String hello() ...

  4. atitit.浏览器插件解决方式----ftp插件 attilax 总结

    atitit.浏览器插件解决方式----ftp插件  attilax 总结 1. 界面概览  D:云盘同步目录p5p5f tp.demo.html1 2. 初始化1 3. 事实调用2 4. 參考2 1 ...

  5. poj1179 区间dp(记忆化搜索写法)有巨坑!

    http://poj.org/problem?id=1179 Description Polygon is a game for one player that starts on a polygon ...

  6. ASIHTTPRequest框架的简单使用

    ASIHttpRequest是一款及其强劲的HTTP訪问开源项目.让简单的API完毕复杂的功能,如:异步请求,队列请求,GZIP压缩.缓存,断点续传,进度跟踪,上传文件.HTTP认证.在新版本号中,还 ...

  7. 当使用Spring MVC @Valid对输入框进行验证的时候,可能会遇到以下的异常:Neither BindingResult nor plain target object for bean name ‘mybean’ available as request attribute

    转自:https://www.cnblogs.com/wenhulu/p/5555457.html 当使用Spring MVC @Valid对输入框进行验证的时候,可能会遇到以下的异常: Neithe ...

  8. 用fiddler不能抓取https及证书无法导出

    本次说的不是首次安装fiddler 1.不管有没有安装成功,先查看有没有安装过证书,有的话删除,重新进行安装 打开fiddler,找到Tools-HTTPS-Athons-Open windows C ...

  9. 关于ssh加密方式的理解

    最近公司服务器被挖矿,所以更换了ssh的连接方式,从之前的密码登陆更换为密钥登陆方式,且禁止了密码登陆.所以在配置这个密钥的过程中,顺带了解了些ssh的原理和相关知识.通用的开源 1.ssh是什么,为 ...

  10. 解决PopupWindow的阴影覆盖问题

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/108 PopupWindow阴影覆盖问题 最近这段时间需求 ...