1.数据字典,编码长度不够。搜索typegroup.jsp
<input name="typegroupcode" class="inputxt" validType="t_s_typegroup,typegroupcode,id" value="${typegroup.typegroupcode }" datatype="s2-20"> <span class="Validform_checktip"><t:mutiLang langKey="common.code.range" langArg="common.code,common.range2to20"/></span></div>
datatype="s2-20"指定字符串长度2-20,langArg是提示的描述。在国际化里面。这里修改了,需要重启项目,刷新缓存没有用
2. 生成代码,找不到数据库;
jeecg/src/main/resources/dbconfig.properties
jeecg/src/main/resources/jeecg/jeecg_database.properties
这两个文件配置要一致
3.项目名称
select * from t_s_muti_lang where lang_key='jeect.platform'
4.首页跳转修改位置
jeecg\src\main\webapp\webpage\main\hplus_main.jsp
jeecg\src\main\webapp\webpage\main\fineui_main.jsp
五、数据权限
- 只看数据权限
首先明白jeecg数据列表加载逻辑,即xxxxConroller.do?list&id=xxxx,跳转到jsp页面,
然后再jsp页面,通过异步方式加载数据xxxxController.do?datagrid进行数据加载。
1)首先添加一个数据权限类型的菜单,注意菜单类型为“权限类型”,入下图,“商品类别权限”做为“商品列表”的权限菜单。注意圈住的地方
2)设置权限菜单的数据规则
如果是自定义sql,相当于就是在数据后追加条件,是以原生sql方式追加的,
userName='#{sysUserCode}'
3)设置角色数据权限
6.jeecg上传到服务器,很多配置文件找不到
原因用了nginx,最终的请求是通过nginx去访问的tomcat。而nginx访问tomcat用的是127.0.0.1,所以资源路径中
+request.getServerName()获取的是127.0.0.1
/** * 获取当前域名路径 * @param request * @return */ public static String getBasePath() { HttpServletRequest request = ContextHolderUtils.getRequest(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath(); return basePath; }
例如我的配置如下,proxy_set_header Host $host; 表示不换请求头
location /gdsk {
proxy_pass http://127.0.0.1:8082;
proxy_set_header Host $host;
}
7.socket 反向代理设置
server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; # location / { # root html; # index index.html index.htm; #} location /wss { proxy_pass http://127.0.0.1:8081; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Real-IP $remote_addr; } location /gdsk { proxy_pass http://127.0.0.1:8082; proxy_set_header Host $host; } location /nginx_status { allow 127.0.0.1; deny all; stub_status on; access_log off; } }
前端页面websocket 连接;
ws = new WebSocket("ws://{ip}/wss");
测试工具http://coolaf.com/tool/chattest
7.jeecg没有字典
package com.jeecg.util; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.MapListHandler; import org.jeecgframework.web.system.pojo.base.TSType; public class GeecgUtil { public static TSType getDict(String groupName,String typecode) { String sql="select t.* from t_s_type t\n" + " inner join t_s_typegroup tg on tg.ID=t.typegroupid\n" + " where tg.typegroupcode='"+groupName+"' and t.typecode='"+typecode+"'"; QueryRunner qr =new QueryRunner(JDBCUtils.getDataSource()); try { List<Map<String, Object>> query = qr.query(sql, new MapListHandler()); if(query.size()>0) { TSType ts=new TSType(); ts.setId(query.get(0).get("id").toString()); ts.setOrderNum(Integer.valueOf(query.get(0).get("order_num").toString())); ts.setTypecode(query.get(0).get("typecode").toString()); ts.setTypename(query.get(0).get("typename").toString()); return ts; } } catch (SQLException e) { e.printStackTrace(); } return null; } public static List<TSType> getDictList(String groupName) { String sql="select t.* from t_s_type t\n" + " inner join t_s_typegroup tg on tg.ID=t.typegroupid\n" + " where tg.typegroupcode='"+groupName+"'"; QueryRunner qr =new QueryRunner(JDBCUtils.getDataSource()); try { List<Map<String, Object>> query = qr.query(sql, new MapListHandler()); List<TSType> tsList =new ArrayList<TSType>(); if(query.size()>0) { TSType ts=new TSType(); ts.setId(query.get(0).get("id").toString()); ts.setOrderNum(Integer.valueOf(query.get(0).get("order_num").toString())); ts.setTypecode(query.get(0).get("typecode").toString()); ts.setTypename(query.get(0).get("typename").toString()); tsList.add(ts); } return tsList; } catch (SQLException e) { e.printStackTrace(); } return null; } }
8.Ambiguous handler methods mapped for HTTP path
说明下报错大致原因。我的一个控制器中,有两个方法下面有贴出来。我去更新一条数据的时候,准备执行toUpdate。但是请求进入控制器中,找不到具体的请求(应该是jeecg解析请求有bug),因为分不清楚,导致该错误。我吧冲突的放到另外一个控制解决
Ambiguous handler methods mapped for HTTP path 'http://www.laotinghuagong.com/gdsk/gpsElectricFenceController.do':
{public org.jeecgframework.core.common.model.json.AjaxJson com.jeecg.gps.controller.GpsElectricFenceController.doUpdate(com.jeecg.gps.entity.GpsElectricFenceEntity,
javax.servlet.http.HttpServletRequest), public org.jeecgframework.core.common.model.json.AjaxJson com.jeecg.gps.controller.GpsElectricFenceController.goUpdate(java.lang.String,javax.servlet.http.HttpServletRequest)}
/** * 更新电子围栏 * * @param ids * @return */ @RequestMapping(params = "doUpdate") @ResponseBody public AjaxJson doUpdate(GpsElectricFenceEntity gpsElectricFence, HttpServletRequest request) { String message = null; AjaxJson j = new AjaxJson(); message = "电子围栏更新成功"; GpsElectricFenceEntity t = gpsElectricFenceService.get(GpsElectricFenceEntity.class, gpsElectricFence.getId()); try { MyBeanUtils.copyBeanNotNull2Bean(gpsElectricFence, t); gpsElectricFenceService.saveOrUpdate(t); systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO); } catch (Exception e) { e.printStackTrace(); message = "电子围栏更新失败"; throw new BusinessException(e.getMessage()); } j.setMsg(message); return j; }
/** * 单个电子围栏 * * @return */ @RequestMapping(params = "scope") @ResponseBody public AjaxJson scope(String id, HttpServletRequest req) { QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource()); String sql="select scope from gps_electric_fence where id='"+id+"'"; try { List<Map<String, Object>> query = qr.query( sql, new MapListHandler()); try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } JSONObject data = new JSONObject(); data.put("stat", 1); data.put("mess", "singleScope"); data.put("data", query.get(0).get("scope").toString()); //JSONObject parseObject = JSON.parseObject(query.get(0).get("scope").toString()); OnlineChatServerPool.sendMessage(data.toString()); } catch (SQLException e) { e.printStackTrace(); } AjaxJson j =new AjaxJson(); j.setSuccess(true); j.setMsg("电子围栏发送到客户端"); j.setCode("200"); return j; }