jeecg的各种坑

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.首页跳转修改位置
jeecgsrcmainwebappwebpagemainhplus_main.jsp
jeecgsrcmainwebappwebpagemainfineui_main.jsp

五、数据权限
  1. 只看数据权限

  首先明白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
" + 
                "        inner join t_s_typegroup tg on tg.ID=t.typegroupid
" + 
                "        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
" + 
                "        inner join t_s_typegroup tg on tg.ID=t.typegroupid
" + 
                "        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;
    }
 
原文地址:https://www.cnblogs.com/longsanshi/p/11696047.html