1. grid 问题
1.创建表单时,grid 选择框中给对应的字段做设置
2.生成代码后的 jsp 页面中查看检查。
3.最终展示:
2. gridselect 多选单选问题:
补充:表单生成中设置
3. 为已有模块添加带有 gridSelect
的字段
下面是以配置清单列表中的增、改表单中的后,加上去的 gridSelect 选择框为例,简单说一下加的流程。
//示例代码片段
<sys:gridselect id="proManage" //对象名(可以随便取)
url="${ctx}/pro/proManage/data" //gridselect选择框请求数据的url
name="proManage.id" //gridselect弹出框选择数据后将 对象名.属性(java属性)的值,替换掉from表单中隐藏input框中的要提交的关联属性(我这里是项目id)
value="${proManage.id}" //回显隐藏from表单input中的要提交的关联属性值
labelName="proManage.name" //选择gridselect框中的数据后,会将该 对象名.属性(Java属性) 的值在form表单中的显示的input框中回显
labelValue="${proManage.name}" //打开窗口后回显该 对象名.属性名到form表单中
title="选择项目" //弹出框的title
cssClass="form-control required" //样式
fieldLabels="项目编号|项目名称" //gridselect框中表格的列名称 fieldKeys="proCd|name" //gridselect框中表格对应的列要显示的那个字段的值(java属性)
searchLabels="项目编号|项目名称" //gridselect框中查询框前的文本值
searchKeys="proCd|name" > //gridselect框中根据该字段查询数据(查询规则在 代码生成器的表单规则内设置的是保持一致的)
</sys:gridselect>
具体属性解释
下面试大致过一下框架对这个标签的执行流程,具体的需要自己去看和理解,我粗略的注释一下
<sys:gridselect 这里使用的jsp的自定义标签,这个标签在jeeplus的如下目录中。
sys 自定义标签的位置如下
这里要看的是 gridselect.tag
标签的执行流程。
- 解析 tag 自定义标签
- 跳转自定义标签后台,它跳到了 modules/common/gridselect 页面
- gridselect.jsp 页面
- 它自定义标签的执行过程看懂了就很容易理解各个属性的含义是做什么,有什么不懂可以再相互讨论
4. 主附表的页面中的如果某个字段用了字典
主附表的页面中的如果某个字段用了字典,那么页面上该怎么显示该字段呢。
自动生成的页面的 Js 代码这块直接是 {{dict.name}}
,dict 没见到哪里定义、或者调用了字典,数据库中当然存的是字典的 value,而不是 name ;
我之前的解决办法都是,存储的时候,直接存字典的 name 到数据库表中,这里显示的时候,就用 {row.name}
,怎么用其他方法呢
2019-6-13 15:50:51
找到解决办法:
原因:js 中未对使用了字典的字段做处理。在 2.41 新版本中发现此处 js 中有处理方法。
function detailFormatter(index, row) {
var htmltpl = $("#volunteerChildrenTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
var html = Mustache.render(htmltpl, {
idx:row.id
});
$.get("${ctx}/volunteer/volunteerconfig/volunteer/detail?id="+row.id, function(volunteer){
var volunteerChild1RowIdx = 0, volunteerChild1Tpl = $("#volunteerChild1Tpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
var data1 = volunteer.volunteerConfigList;
for (var i=0; i<data1.length; i++){
data1[i].dict = {};
data1[i].dict.name = jp.getDictLabel(${fns:toJson(fns:getDictList('school_batches'))}, data1[i].name, "-");
addRow('#volunteerChild-'+row.id+'-1-List', volunteerChild1RowIdx, volunteerChild1Tpl, data1[i]);
volunteerChild1RowIdx = volunteerChild1RowIdx + 1;
}
})
return html;
}
这样之后,下面
<script type="text/template" id="volunteerChild1Tpl">
<tr>
<td>
{{row.dict.name}}
</td>
<td>
{{row.vindex}}
</td>
<td>
{{row.isArt}}
</td>
<td>
{{row.isAdvance}}
</td>
<td>
{{row.reportedStart}}
</td>
<td>
{{row.reportedEnd}}
</td>
<td>
{{row.raiseStart}}
</td>
<td>
{{row.raiseEnd}}
</td>
<td>
{{row.enrollStart}}
</td>
<td>
{{row.enrollEnd}}
</td>
</tr>
</script>
中就可以直接使用 {{row.dict.name}}
,这样,页面中主附表的附表内该字段就会正常显示了。
5. gridselect 中的 input
值回填问题
这个 gridselect 选择框怎么选择一个确认后,总是不能回填到 input 显示出来呢,但是值确实拿到了且能传给后端保存,完了还能在列表处显示出来。
问下是我这个 tag 里 labelName 和 labelValue 或者啥的没配置对吗?
还是因为这个标签不支持 :obga.obgb.obgc.nam
这种呢
解决方法:
2019-5-16 15:11:27
日期时间控件问题:
在 form.jsp 页面中仅粘贴时间控件的 HTML 代码是不能够起作用的,可能还需要引入相关 js
eg:
6. gridselect
显示某个嵌套多层的对象
某个 form.jsp 页面中需要用 gridselect 显示某个嵌套多层的一个对象的属性,在 JSP 中该字段的 gridselect 标签内的 lablename 中写 useraccount.user.nam
(不带元对象),此时当确定选择后,被选择的记录的该字段应该要显示到此处 input 内,
但是,前提是 gridselect 组件打开的 form 中的数据记录里必须包含该字段的值对应的 mapper 映射文件中查询 userAccountLogColumns
对应中应该包含该字段,且 userAccountLogJoins
中配置好关联表关系,
这样就可以在 list 页面和 form 页面中正常显示,正常选择确认字段了。
7. 左树右表中点击左树不传 id
的问题
【传说】Peter 16:47:29
左树右表中,点击左树中的某行,应该查询的 data?
xxxxx.id= 这个里面怎么给不了 id 呢
在哪里配置
【传说】Peter 16:51:06
点击某行的 js 方法在哪里?
【传说】Peter 17:03:00
f...,找到问题了,生成的 xxxTreeList.js 中有处问题。
8. 列表、form 的 JSP 页面中的时间格式问题:
a: 没改啥地方啊,为啥这个字段显示成时间戳了奇了怪了!
b: 你没格式化,js,类,数据库,都看一下
找到问题了,是我实体类中没加这个 @JsonFormat(pattern='yyyy-MM-dd HH:mm:ss')
格式化时间的注解。这个字段应该生成的时候是 String,手动改为 Date 类型的
9. 配置 gridSelect 字段时需要注意以下地方配置
配置 gridSelect 字段时需要注意以下地方配置:
10. 时间格式处理:
默认使用时间格式字段时,list.jsp、form.jsp 页面中该字段时间格式都设置为:format: "YYYY-MM-DD HH:mm:ss"
若只需要年份,暂时采用的办法是将实体类中该字段类型设置为 String
,数据库(MySQL)中该字段类型设置为 varchar
后,
在 list.jsp 中引用的 js 代码中
此处设置为 format: "YYYY"
;
form.jsp 中同样处理方法:
设置完成后,则会显示为:
11. 列表页中因为实体类关联属性长度导致查询异常问题
Java 中关联属性写的太长了!😂
想知道最长可以写多少?
12. SQL 中 left join
查询问题
SQL 之 left join 后有多个条件时应该怎么写才能正确的显示出想要的结果呢?
LEFT JOIN m_rank majorrank ON (majorrank.majorid = emcode.levelformajorsid AND majorrank.universityid = emcode.universityid)
13. 某个使用了 gridselect
的多层嵌套对象的字段的设置问题
答案:gridselect 给该字段传的值是 gridselect 查询出来的对象的 id,回显时回显的是同样的对象的同一个属性字段。图片中此处该字段的对象类型和 gridselect 查询出来的对象不是同一个类型,会出现回显时显示的是 gridselect 对象的同属性名的属性字段值。暂解决办法为:更换 gridselect 选择器中的对象与该字段对象相同,暂未找到 2 者不同类时的解决办法(不重要)。
14. 怎么让主附表中的附表也打开横向滚动条?
用 CSS 样式控制显示出来吗?尝试一下
<style>
.tab-content{
overflow-x: scroll;
width: 3000px;
}
</style>
添加该样式后显示不正确。
暂且在 list.jsp 中添加:
<style>
.tabs-container .tab-content > .active,
.tabs-container .pill-content > .active {
display: block;
overflow-x: auto;
width: 3000px;
}
</style>
15. gridselect
回填信息显示问题
回填信息显示问题:
原因可能是 XML 中对应字段配置不正确时,则会导致 gridselect 选择某条记录确认后,但是数据不能回填到文本框中。
解决办法:
- 保证 labelname 和 labelValue 中的值正确;
- 保证 XML 中查询关联字段对应的 gridselect 相对应的正确。
- 另外,发现此处的回显只能显示 一个对象中的直接字段的值,不能显示 一个对象中的对象中的字段的值。
16. SQLException: Connection is read-only.
java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed
解决方法:事务配置在 service 层,但是你的 service 层的方法是 query 开头的,service 调用的 query 方法根本就没有事务。你的配置文件下面是不是还有关于 query*的配置成了 read-only?修改你 service 方法的开头变成不是 read-only 的那种配置,如 clear 开头。(在 query 方法名(read_only)里面执行了 update 操作,所以就报错了。)
//删除转化出现异常时已经插入的数据记录
@Transactional(readOnly = false)
public void deleteERecord(LevelForMajors levelForMajors){
mapper.deleteERecord(levelForMajors);
}
17. jeeplus 中想实现下拉多选功能要怎么实现?
从字典取数据:
<td class="active"><label class="pull-right">类型:</label></td>
<td>
<form:select path="employee.employeeType" class="form-control">
<form:options items="${fns:getDictList('employee_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
</form:select>
</td>
这个是字典多选。
这个是查询数据库的
要在多选框中搜索的话 可以使用 select2 插件。
参考:Basic usage | Select2 - The jQuery replacement for select boxes
18. 从数据库导入项目中的表然后生成的模块后,这模块的 list.jsp 页面会报错:
解决办法:手动在 方法中为 Model 添加一个 对象。
19. 慎用 select *
当自己手写一些 SQL 时,如果查找的对象/表中有封装了其他对象,那么,当 SQL 中有 select *
时会导致封装对象为 Null 的现象。
因此,如果有会使用到封装的对象,那么 XML 中的 SQL 还是加上映射关系吧。
eg:
<!-- 根据年份、省份、高校、文理科、批次查找记录 findListByYPNWB -->
<select id="findListByYPNWB" resultType="Eucode" >
SELECT
<include refid="EucodeColumns"/>
FROM e_uecode a
<include refid="EucodeJoins"/>
WHERE a.year = #{year} AND a.province = #{province.id} AND a.universityid = #{university.id} AND a.wltype = #{wltype} AND a.schoolbatches = #{schoolBatches} AND (a.r3 != "2" OR ISNULL(a.r3)) AND (a.r3 != "3" OR ISNULL(a.r3))
</select>
20. 关联查询 WHERE
语句中使用 AND
且关系过滤会极大降低查询效率
关联查询中如果使用了 如下注释中的关联,则会造成查询花费时间很长。 1.38s --> 0.014s
LEFT JOIN m_rank majorrank ON majorrank.id = a.majorrankid
-- (
-- majorrank.majorid = emcode.levelformajorsid
-- AND majorrank.universityid = emcode.universityid
-- )
21. jstree 中怎么设置展开的层级?
22. Jeeplus 的树形结构表,在 List.jsp 展示中的问题
Jeeplus 的树形结构表,在 List.jsp 展示中的问题:某个字段使用字典后,需要在 js 中进行转化。
eg:可以参考 area.js
<details class="details action__item commentMenuBtn">
<summary>
<svg class="svg--small">
<use xlink:href="#iconChat"></use>
</svg>
</summary>
</details>
gridselect
选择器中,展示的某个字段如果使用了字典,该如何显示?还是直接先将获取的 data 的数据中该字段使用字典工具的方法赋值之后再返回给页面?
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于