以下都是本人使用jeesite框架随手记录的笔记,有错误的地方欢迎大家指出来,共同进步!!!
1.字典工具 DictUtils.java
1.1:根据类型和值获取字典标签(列表取值)
${@DictUtils.getDictLabel('字典类型',jiaAoSaleClientInfo.clientType,'未知')}
js.getDictLabel(${@DictUtils.getDictListJson('jia_ao_client_blacklist_status')}, val, '${text("未设置")}', true);
2.前端提示用js.showMessage();
3.详情界面时间转换使用${jiaAoSaleSample.createDate,dateFormat="yyyy-MM-dd HH:mm"}
4.添加btnTool样式 即可返回先前界面 比如列表界面:class="btn btn-default btn-sm btnTool"
5.进入列表页面直接显示查询框可以去除hide样式实现,如下
之前:<#form:form id="searchForm" model="${jiaAoSaleClientBlacklist}" action="${ctx}/blacklist/jiaAoSaleClientBlacklist/listData" method="post" class="form-inline hide"
修改后:<#form:form id="searchForm" model="${jiaAoSaleClientBlacklist}" action="${ctx}/blacklist/jiaAoSaleClientBlacklist/listData" method="post" class="form-inline"
6.给下拉框默认第一个添加空值可以通过设置属性
blankOption="true"
7.列表时间转换{header:'${text("创建时间")}', name:'createDate', index:'a.create_date', width:80, align:"center", frozen:true
8.jeesite列表分页查询可以不设置临时自定义字段 只要数据库查询字段起别名和bean类字段属性一样就可以映射上 例如:
private JiaAoSaleClientInfo clientInfo; //客户信息实体类
sql起别名: ci.client_name 'clientInfo.client_name' //这样就能拿到客户名称自动映射进客户实体类
9.jeesite接收前端传过来的json数组进行转换成对应实体类(jar包:com.alibaba.fastjson.JSONArray)
//用json数组保存前端json字符串
JSONArray array= JSONObject.parseArray("这里接收一个字符串数组");
//遍历数组进行转换
for (int i=0;i<array.size();i++){
JSONObject jsonObject=array.getJSONObject(i);
JiaAoSalePlanDetail detail=jsonObject.toJavaObject(JiaAoSalePlanDetail.class);
}
10.jeesite添加class="btnList"样式自带默认跳转 属于a标签专用样式(需注意)
11.传json数组给后台 前端ajax请求为POST 为GET报错400(待验证求解)
12.前端写ajax时添加contentType: "application/json; charset=utf-8", 属性会导致值注入不到实体类 目前仅限于传json数组使用
13.java中的增强for循环和迭代器在遍历时不允许对该遍历的对象进行添加和删除操作 否则将抛出ConcurrentModificationException异常
14.layer.open方式不能传json格式数据给后台解析,可以通过主界面设置隐藏域,子界面获取主界面隐藏域值发起ajax请求解析,(注意:如果单纯是一个json字符串不需要通过JSON.stringify方法保存到隐藏域)
15.return js.formatNumber(val, 2, false, ''); // 数值类型格式化 (原始数值, 小数位数, 是否千分位, 默认值,金额情况下设置0.00);
16.子表列表格式化日期
{header:'${text("创建时间")}', name:'createDate', index:'a.create_date', width:80, align:"center", frozen:true,formatter:'date', formatoptions:{srcformat:'Y-m-d',newformat:'Y-m-d'}},
17.dataGrid数据可以通过以下方式加载
<#form:form id="searchForm" model="${buyPlanStore}" action="${ctx}/warehouse/planin/buyPlanStore/listData" method="post" class="form-inline"
data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
18.dataGrid里的字段如果设置为hidden 后台是获取不到值的 只能通过只读显示后台方可获取到值
19.dataGrid添加复选框给 dataGrid 组件设置属性 showCheckbox: true 显示复选框
2、调用 getSelectRow 获取选中行 var planClearingIds = $('#dkpDataGrid').dataGrid('getSelectRows').join(",");
20.layer弹窗获取弹窗对象 var childPage = layero.find("iframe")[0].contentWindow;//子页面对象
21.FastJson将字符串转换未java数组对象
//将键值对方式排列的字符串形式的json数组解析为java数组对象。
List<JiaAoQcReservedSample> reservedSampleList=JSONArray.parseArray(reservedSampleStr,JiaAoQcReservedSample.class);
22.mybatis字符串拼接写法
<if test="startTime != null and startTime != ''">
<![CDATA[ and a.create_date >= #{startTime} ]]>
</if>
23.input提示信息 输入时消失
<input placeholder="提示语..."></input>
25. jeesite表连接注解写法
joinTable = {
@JoinTable(type = JoinTable.Type.LEFT_JOIN, entity = User.class, attrName = "itsSalesUser", alias = "su",
on = "a.its_sales = su.user_code", columns = {
@Column(name = "user_code", label = "用户编码", isPK = true),
@Column(name = "user_name", label = "用户名称", isQuery = false),
@Column(name = "ref_name", label = "用户类型引用姓名"),
})},
26.页面获取当前登录人信息
var userCode="${@UserUtils.getUser().getUserCode()}";
27.dataGrid去除排序
sortable:false,
28.单选框默认选中
$(document).ready(function () {
$("#testRadio1").parent().addClass("checked");
});
29.mybatis in查询写法
<foreach collection="orderId.orderCodeList" index="index" item="item" open="(" separator="," close=")">
'${item}'
</foreach>
30.jQuery判断元素是否存在class
var flag=$("#approvalPending").hasClass("bottom");
31.获取dataGrid列表复选框选中的行 (排除全选之外)
//获取子表复选框选中的值
var trs=$("input[type=checkbox]:checked").not("#cb_financeConfirmationDetailsDataGrid").parent().parent();
32.导出列表
//导出
1.导出事件
$('#btnExport').click(function(){
js.ajaxSubmitForm($('#searchForm'), {
url:'${ctx}/confirmation/financeReceivableConfirmation/exportData',
downloadFile:true
});
});
2.controller
/**
* 导出
* @param storeProductInDetail
* @param isAll
* @param ctrlPermi
* @param response
*/
@RequiresPermissions({"confirmation:financeReceivableConfirmation:edit"})
@RequestMapping({"exportData"})
public void exportData(FinanceConfirmationDetails financeConfirmationDetails, Boolean isAll, String ctrlPermi, HttpServletResponse response) {
List<FinanceConfirmationDetails> list = this.financeReceivableConfirmationService.findListPage(financeConfirmationDetails).getList();
String fileName = "应收款询证函列表" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
ExcelExport ee = new ExcelExport("应收款询证函列表", FinanceCompanyBank.class);
Throwable var8 = null;
try {
ee.setDataList(list).write(response, fileName);
} catch (Throwable var17) {
var8 = var17;
throw var17;
} finally {
if (ee != null) {
if (var8 != null) {
try {
ee.close();
} catch (Throwable var16) {
var8.addSuppressed(var16);
}
} else {
ee.close();
}
}
}
}
3.bean类
@ExcelFields({@ExcelField(
title = "客户名称",
attrName = "clientId.clientName",
align = ExcelField.Align.CENTER,
sort = 10
), @ExcelField(
title = "联系人",
attrName = "user.refName",
align = ExcelField.Align.CENTER,
sort = 30
)
33.dataGrid去除默认的行点击事件
beforeSelectRow: function (rowid, e) {//去除列点击事件
var $myGrid = $(this),
i = $.jgrid.getCellIndex($(e.target).closest('td')[0]),
cm = $myGrid.jqGrid('getGridParam', 'colModel');
return (cm[i].name === 'cb');
} ,
34.jeesite标签页的使用
<div class="tab-content" style="margin-top: 50px">
<div class="tab-pane active" id="tab-1">
<table id="ysFinancePaymentReceiptDetailDataGrid"></table>
<a href="#" id="ysFinancePaymentReceiptDetailDataGridAddRowBtn" style="display: none;" class="btn btn-primary btn-sm mt10 mb10"><i class="fa fa-plus"></i> ${text('增行')}</a>
</div>
<div class="tab-pane" id="tab-2">
<div class="row">
<div class="col-xs-12">
<div class="form-group">
<label class="control-label col-sm-2" title="">
<span class="required hide">*</span>增加预收<i class="fa icon-question hide"></i></label>
<div class="col-sm-4">
<input id="advanceReceiptAmount" class="form-control" name="advanceReceiptAmount">
</div>
</div>
</div>
</div>
</div>
</div>
35.dataGrid绑定事件
,dataEvents:[//绑定change事件
{
type:'change',
fn:function(){
setReceiptAmount();//设置应收金额
}
}
]
36.获取dataGrid下的所有行,排除标题行
var trs=$("#jiaAoFinanceBadDebtDetailsDataGrid tbody tr").not("tr:first");
37.dataGrid列表input name属性变成dataGridlist[0]时 删除掉digits样式就可以了