Coder Social home page Coder Social logo

erupts / erupt Goto Github PK

View Code? Open in Web Editor NEW
2.4K 57.0 439.0 156.33 MB

🚀 General data management framework, objects are pages

Home Page: https://www.erupt.xyz

License: Apache License 2.0

Java 96.04% HTML 1.36% FreeMarker 0.06% Dockerfile 0.01% Vue 2.40% SCSS 0.14% Shell 0.01%
admin annotation erupt upms angular erupt-framework jpa java springboot spring

erupt's Introduction

🚀 Hi, I'm YuePeng,a passionate self-taught backend developer from China.


erupt stats


I love to make friends. so if you want to say hi, I'll be happy to meet you more! 😊

erupt's People

Contributors

aurthurxlc avatar debugingonprod avatar dependabot[bot] avatar dudiao avatar erupts avatar fawn-deer avatar hlhutu avatar hu-wentao avatar icefairy avatar javamxd avatar lamperwang avatar liuhulu avatar liyujiang-gzu avatar orange-hash avatar shaonianche avatar snice avatar ssins avatar xiaozehao avatar xujiaji avatar zaster avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

erupt's Issues

加了nginx代理,获取不到真实的ip

版本情况

JDK版本: openjdk_8_201
erupt版本: 1.X.X (请确保最新尝试是否还有问题)

问题描述(包括截图)

加了nginx代理,获取不到真实的ip
image

image

  1. 复现代码

  2. 堆栈信息

  3. 测试涉及到的文件(注意脱密)

可参考

public static String getClientIp(@NonNull ServerHttpRequest request) {
		String ip = null;
		HttpHeaders headers = request.getHeaders();
		try {
			ip = headers.getFirst("X-Real-IP");
			if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
				ip = headers.getFirst("x-forwarded-for");
			}
			if (org.apache.commons.lang.StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
				ip = headers.getFirst("Proxy-Client-IP");
			}
			if (StringUtils.isEmpty(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
				ip = headers.getFirst("WL-Proxy-Client-IP");
			}
			if (org.apache.commons.lang.StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
				ip = headers.getFirst("HTTP_CLIENT_IP");
			}
			if (org.apache.commons.lang.StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
				ip = headers.getFirst("HTTP_X_FORWARDED_FOR");
			}
			if (org.apache.commons.lang.StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
				ip = Objects.requireNonNull(request.getRemoteAddress()).getAddress().getHostAddress();
			}
		} catch (Exception e) {
			log.error("IPUtils ERROR ", e);
		}

		//使用代理,则获取第一个IP地址
		if(!StringUtils.isEmpty(ip) && ip.length() > 15) {
			if(ip.indexOf(",") > 0) {
				ip = ip.substring(0, ip.indexOf(","));
			}
		}

		return ip;
	}

切换TPL菜单不生效

版本情况

JDK版本: zuul_11.0.14
erupt版本: 1.10.14 (请确保最新尝试是否还有问题)

问题描述(包括截图)

  1. 复现代码
    配置两个菜单,名称和类型值分别为:
  • 测试1 amis.html?code=test1
  • 测试2 amis.html?code=test2

访问菜单时,访问测试1,页面正常,再访问测试2,地址栏有变化,但是页面没有刷新

  1. 堆栈信息

  2. 测试涉及到的文件(注意脱密)

如何配置此场景的列表和编辑界面?

问题描述

提个问题,比如有个标签表,一个商品表,

一个商品可以选择多个标签,

商品列表要显示商品关联的多个标签,这种应该怎么配置呢?

jdbc-template 与 JPA存在兼容问题

版本情况

JDK版本: openjdk_17_03
erupt版本: 1.10.10

初始化执行时调用了spring boot - jdbc-template
这部分与JPA 对 hibernate的配置定义存在冲突,hibernate 配置了default_schema时,建表语句会自动关联schema,但是
UpmsDataLoadService line:52 开始调用的jdbc 无法正常执行,此处需统一使用jpa执行。

自动新建表单途径

版本情况

JDK版本: openjdk_8_211
erupt版本: 1.10.4 (请确保最新尝试是否还有问题)

问题描述(包括截图)

  1. 要动态新建一个数据表,表名、表头(字段)都是确定的,很想用erupt自动生成数据库的库表,生成对库表进行增删查改操作界面,有没有办法?
  2. 这个问题的另外一个表述就是,在数据库里用代码(SQL)创建一个表,有什么办法把这个表通过erupt映射到可操作界面上

谢谢

前端header未携带token

版本情况

JDK版本: openjdk_8_201
erupt版本: 1.8.x

问题描述(包括截图)

  • 自定义前端tpl交互时 由于前端请求没有携带token信息导致后台获取不到用户信息。 是否能添加axios拦截统一添加token

优化+建议

版本情况

JDK版本: openjdk_8_201
erupt版本: 1.9.0

问题描述

1、直接通过界面下载按钮下载下来的表格不支持再次导入,会报错。
image
image

如果想通过导出,调整数据,再次导入,却发现表格不支持岂不是很苦恼?
每次都要下载模板,再一一填数据还是比较麻烦的吧。

2、小建议:表格导入的时候能够支持数据依据指定字段覆盖,即更新,未设定则新增。

当然了,有需要的话自己也可以通过dataProxy来对数据进行处理。

希望字段新增枚举支持

版本情况

JDK版本: openjdk_15
erupt版本: 1.6.16

单选框选择保存后刷新页面重新选择不会默认选中

  1. 复现代码
    @EruptField(
            views = @View(title = "状态",type = ViewType.TEXT),
            edit = @Edit(title = "状态",type = EditType.CHOICE,
                    choiceType = @ChoiceType(
                            fetchHandler = StateFetchHandler.class
                    )
            )
    )
    @Enumerated(EnumType.STRING)
    private State state;

Date类型需要格式化到毫秒级别

版本情况

JDK版本: openjdk 11.0.12
erupt版本: 1.10.13

问题描述(包括截图)

日期时间只能格式化到秒级,如果需要毫秒级的格式化无效

  1. 复现代码
@EruptField(
            views = @View(title = "时间", type = ViewType.DATE_TIME),
            edit = @Edit(title = "时间"
                    , readonly = @Readonly()
                    , dateType = @DateType(type = DateType.Type.DATE_TIME)
                    , search = @Search(vague = true)
            )
    )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
    private Date winningTime;

日期格式化需要精确到毫秒级别。
如果是我使用不当,望指正

bigint类型 查询失败

版本情况

JDK版本: openjdk_8_201
erupt版本: 1.10.6

问题描述(包括截图)

  1. 复现代码
    前端搜索不支持大数(bigint),搜索框填入大数后点击空白处会
    自动转为int型 导致查询失败
    image
    image
    image

实体类文件使用的时Long 型
2. 堆栈信息
3. 无

  1. 测试涉及到的文件(注意脱密)

新建用户时报错

版本情况

JDK版本: openjdk_17_03
erupt版本: 1.10.10

问题描述(包括截图)

com.google.gson.JsonIOException: Failed making field 'java.lang.ThreadLocal#threadLocalHashCode' accessible; either change its visibility or write a custom TypeAdapter for its declaring type
at com.google.gson.internal.reflect.ReflectionHelper.makeAccessible(ReflectionHelper.java:22)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:158)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:101)
at com.google.gson.Gson.getAdapter(Gson.java:501)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:116)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:165)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:101)
at com.google.gson.Gson.getAdapter(Gson.java:501)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:116)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:165)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:101)
at com.google.gson.Gson.getAdapter(Gson.java:501)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:116)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:165)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:101)
at com.google.gson.Gson.getAdapter(Gson.java:501)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:116)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:165)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:101)
at com.google.gson.Gson.getAdapter(Gson.java:501)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory.create(CollectionTypeAdapterFactory.java:53)
at com.google.gson.Gson.getAdapter(Gson.java:501)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:116)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:165)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:101)
at com.google.gson.Gson.getAdapter(Gson.java:501)
at com.google.gson.Gson.fromJson(Gson.java:990)
at com.google.gson.Gson.fromJson(Gson.java:956)
at com.google.gson.Gson.fromJson(Gson.java:905)
at com.google.gson.Gson.fromJson(Gson.java:876)
at xyz.erupt.core.controller.EruptModifyController.addEruptData(EruptModifyController.java:76)
at xyz.erupt.core.controller.EruptModifyController$$FastClassBySpringCGLIB$$b1819928.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
at xyz.erupt.core.controller.EruptModifyController$$EnhancerBySpringCGLIB$$2c4a02a1.addEruptData()
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:517)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
at xyz.erupt.security.interceptor.HttpServletRequestFilter.doFilter(HttpServletRequestFilter.java:47)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:387)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private final int java.lang.ThreadLocal.threadLocalHashCode accessible: module java.base does not "opens java.lang" to unnamed module @4fcd19b3
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:178)
at java.base/java.lang.reflect.Field.setAccessible(Field.java:172)
at com.google.gson.internal.reflect.ReflectionHelper.makeAccessible(ReflectionHelper.java:19)
... 109 more

image

ManyToOne匹配不到数据时,ID会给个0。同时点击查看或编辑按钮,会出NullPointException。

版本情况

JDK版本: openjdk_8_302
erupt版本: 1.8.5 (请确保最新尝试是否还有问题)

问题描述(包括截图)

ManyToOne匹配不到数据时,ID会给个0。同时点击查看或编辑按钮,会出NullPointException。

  1. 复现代码
    @ManyToOne
    @JoinColumn(name="task_id")
    @EruptField(
            views = {@View(title = "拜访照片", column = "img", type = ViewType.IMAGE, show = false ),
                    @View(title = "拜访照片val", column = "img", show = false ),
                    @View(title = "拜访ID", column = "id", show = false )
            }
    )
    private VisitTask visitTask;
  1. 堆栈信息
    java.lang.NullPointerException: null
    at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:57) ~[na:1.8.0_302]
    at sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:36) ~[na:1.8.0_302]
    at java.lang.reflect.Field.get(Field.java:393) ~[na:1.8.0_302]
    at xyz.erupt.core.util.EruptUtil.generateEruptDataMap(EruptUtil.java:55) ~[erupt-core-1.8.5.jar!/:na]
    at xyz.erupt.core.controller.EruptDataController.getEruptDataById(EruptDataController.java:93) ~[erupt-core-1.8.5.jar!/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_302]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_302]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_302]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_302]
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197) ~[spring-web-5.3.9.jar!/:5.3.9]
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141) ~[spring-web-5.3.9.jar!/:5.3.9]
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.3.9.jar!/:5.3.9]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.9.jar!/:5.3.9]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.9.jar!/:5.3.9]
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.9.jar!/:5.3.9]
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1064) ~[spring-webmvc-5.3.9.jar!/:5.3.9]
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.9.jar!/:5.3.9]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.9.jar!/:5.3.9]
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.9.jar!/:5.3.9]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) ~[tomcat-embed-core-9.0.52.jar!/:na]
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.9.jar!/:5.3.9]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.52.jar!/:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.52.jar!/:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.52.jar!/:na]
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.52.jar!/:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.52.jar!/:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.52.jar!/:na]
    at xyz.erupt.security.interceptor.HttpServletRequestFilter.doFilter(HttpServletRequestFilter.java:48) ~[erupt-security-1.8.5.jar!/:na]

  2. 测试涉及到的文件(注意脱密)

C95B90BD9DF63A6596EC3A740BE3CBFB
image

java.lang.reflect.InaccessibleObjectException: Unable to make private java.lang.module.Configuration() accessible: module java.base does not "opens java.lang.module"

版本情况

JDK版本: jdk-15.0.2 windows11
erupt版本: 1.10.6 (请确保最新尝试是否还有问题)

问题描述(包括截图)

UI上操作发送电子邮件,发生如下错误

  1. 复现代码

  2. 堆栈信息

WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by com.google.gson.internal.reflect.UnsafeReflectionAccessor (file:/C:/Users/%e9%bb%84%e5%a5%95%e9%b9%8f/.m2/repository/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar) to field java.io.PrintStream.autoFlush WARNING: Please consider reporting this to the maintainers of com.google.gson.internal.reflect.UnsafeReflectionAccessor WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release java.lang.reflect.InaccessibleObjectException: Unable to make private java.lang.module.Configuration() accessible: module java.base does not "opens java.lang.module" to unnamed module @45292ec1 at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:361) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:301) at java.base/java.lang.reflect.Constructor.checkCanSetAccessible(Constructor.java:189) at java.base/java.lang.reflect.Constructor.setAccessible(Constructor.java:182) at com.google.gson.internal.reflect.UnsafeReflectionAccessor.makeAccessible(UnsafeReflectionAccessor.java:44) at com.google.gson.internal.ConstructorConstructor.newDefaultConstructor(ConstructorConstructor.java:103) at com.google.gson.internal.ConstructorConstructor.get(ConstructorConstructor.java:85) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:101) at com.google.gson.Gson.getAdapter(Gson.java:489) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) at com.google.gson.Gson.getAdapter(Gson.java:489)

  1. 测试涉及到的文件(注意脱密)

java.awt.AWTError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.

版本情况

Linux系统版本
LSB Version: core-11.1.0ubuntu2-noarch:security-11.1.0ubuntu2-noarch
Distributor ID: Ubuntu
Description: Ubuntu 20.04.5 LTS
Release: 20.04
Codename: focal

JDK版本
openjdk version "17.0.4" 2022-07-19
OpenJDK Runtime Environment GraalVM CE 22.2.0 (build 17.0.4+8-jvmci-22.2-b06)
OpenJDK 64-Bit Server VM GraalVM CE 22.2.0 (build 17.0.4+8-jvmci-22.2-b06, mixed mode, sharing)

erupt版本
:: Spring Boot :: v(2.7.2)
:: Erupt Framework :: v(1.10.13)

问题描述(包括截图)

堆栈信息

2022-09-07 12:26:06.609  INFO 35678 --- [           main] com.bacterial.strain.cms.CmsApplication  : Starting CmsApplication v1.0.0 using Java 17.0.4 on iZ2ze436qim4c2f4o4vsl9Z with PID 35678 (/var/www/strain/cms-1.0.0.jar started by root in /var/www/strain)
2022-09-07 12:26:06.612  INFO 35678 --- [           main] com.bacterial.strain.cms.CmsApplication  : The following 1 profile is active: "dev"
2022-09-07 12:26:09.953  INFO 35678 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode
2022-09-07 12:26:09.967  INFO 35678 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2022-09-07 12:26:09.995  INFO 35678 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 8 ms. Found 0 JPA repository interfaces.
2022-09-07 12:26:10.074  INFO 35678 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode
2022-09-07 12:26:10.079  INFO 35678 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
2022-09-07 12:26:10.124  INFO 35678 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 1 ms. Found 0 Redis repository interfaces.
2022-09-07 12:26:12.656  INFO 35678 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2022-09-07 12:26:12.682  INFO 35678 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2022-09-07 12:26:12.683  INFO 35678 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.65]
2022-09-07 12:26:12.932  INFO 35678 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2022-09-07 12:26:12.933  INFO 35678 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 6095 ms
2022-09-07 12:26:14.392  INFO 35678 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2022-09-07 12:26:15.727  INFO 35678 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2022-09-07 12:26:16.136  INFO 35678 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2022-09-07 12:26:16.770  INFO 35678 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 5.6.10.Final
2022-09-07 12:26:17.592  INFO 35678 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
2022-09-07 12:26:18.026  INFO 35678 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL5InnoDBDialect
2022-09-07 12:26:21.746  INFO 35678 --- [           main] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2022-09-07 12:26:21.780  INFO 35678 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2022-09-07 12:26:23.479  WARN 35678 --- [           main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2022-09-07 12:26:24.132  INFO 35678 --- [           main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page: class path resource [public/index.html]
2022-09-07 12:26:25.334  INFO 35678 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2022-09-07 12:26:25.385  INFO 35678 --- [           main] com.bacterial.strain.cms.CmsApplication  : Started CmsApplication in 20.89 seconds (JVM running for 25.34)
2022-09-07 12:26:25.674  INFO 35678 --- [           main] xyz.erupt.core.service.EruptCoreService  : <============================================================>
2022-09-07 12:26:25.681  INFO 35678 --- [           main] xyz.erupt.core.service.EruptCoreService  : 🚀 -> erupt-jpa      module initialization completed in 288ms
2022-09-07 12:26:25.686  INFO 35678 --- [           main] xyz.erupt.core.service.EruptCoreService  : 🚀 -> erupt-security module initialization completed in 5ms
2022-09-07 12:26:25.688  INFO 35678 --- [           main] xyz.erupt.core.service.EruptCoreService  : 🚀 -> erupt-upms     module initialization completed in 2ms
2022-09-07 12:26:25.690  INFO 35678 --- [           main] xyz.erupt.core.service.EruptCoreService  : Erupt modules : 3
2022-09-07 12:26:25.690  INFO 35678 --- [           main] xyz.erupt.core.service.EruptCoreService  : Erupt classes : 15
2022-09-07 12:26:25.690  INFO 35678 --- [           main] xyz.erupt.core.service.EruptCoreService  : Erupt Framework initialization completed in 297ms
2022-09-07 12:26:25.691  INFO 35678 --- [           main] xyz.erupt.core.service.EruptCoreService  : <============================================================>
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65)
Caused by: java.awt.AWTError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
        at java.desktop/sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
        at java.desktop/sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:101)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
        at java.desktop/sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:60)
        at java.desktop/sun.awt.PlatformGraphicsInfo.createGE(PlatformGraphicsInfo.java:36)
        at java.desktop/java.awt.GraphicsEnvironment$LocalGE.createGE(GraphicsEnvironment.java:93)
        at java.desktop/java.awt.GraphicsEnvironment$LocalGE.<clinit>(GraphicsEnvironment.java:84)
        at java.desktop/java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:106)
        at java.desktop/sun.awt.X11.XToolkit.<clinit>(XToolkit.java:224)
        at java.desktop/sun.awt.PlatformGraphicsInfo.createToolkit(PlatformGraphicsInfo.java:40)
        at java.desktop/java.awt.Toolkit.getDefaultToolkit(Toolkit.java:599)
        at java.desktop/java.awt.Desktop.isDesktopSupported(Desktop.java:329)
        at java.desktop/java.awt.Desktop.getDesktop(Desktop.java:303)
        at com.bacterial.strain.cms.CmsApplication.main(CmsApplication.java:23)
        ... 8 more

夜间模式导致首页不能正常显示、路由复用失效

版本情况

JDK版本:11.0.9.1
erupt版本:1.6.4

问题描述(包括截图)

  • 开启夜间模式,路由复用被强制关闭

  • 在夜间模式下开启路由复用,夜间模式失效(互相冲突)

  • 夜间模式下首页一片漆黑,无法显示内容,移动端显示正常(若能提供夜间模式下自定义页面 取消反转色选项 更佳)

首页不能正常显示

冲突

移动端首页正常

  1. 复现代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta content="width=device-width, initial-scale=1" name="viewport">
</head>
<body>
  <h1>Hello World</h1>
</body>
</html>
  1. 测试涉及到的文件: home.html

jdk15新增job报错

版本情况

JDK版本: openjdk_15
erupt版本: 1.6.16

job扩展新增job异常

  1. 复现代码
    image
    image

当创建的菜单的类型值重复存在的问题

版本情况

JDK版本: openjdk_8_201
erupt版本: 1.10.1

问题描述

当创建的菜单的类型值(如:都为type)为重复的时候(我只试了菜单类型为table类型),先创建一个菜单名称为A,再创建另一个菜单名称为B
先点击菜单B可会正常跳转,再点击A则依然保持在B的页面,
然后点击别的类型值不同的菜单,再点击菜单A,则依然是跳转到菜单B
应该是前端使用类型值绑定了吧?
image

image

且在程序中获取当前菜单eruptContextService.getCurrentEruptMenu()时,也只能一直获取菜单B,应该是源码中如下部分导致:使用请求头中的erupt字段存储的类型值获取的时候,类型值相同时,始终为数据库中最后新增的菜单,因为map会覆盖的嘛~

// xyz.erupt.upms.service.EruptUserService#cacheUserInfo
public void cacheUserInfo(EruptUser eruptUser, String token) {
        List<EruptMenu> eruptMenus = this.eruptMenuService.getUserAllMenu(eruptUser);
        Map<String, Object> valueMap = new HashMap();
        Map<String, Object> codeMap = new HashMap();
        Iterator var6 = eruptMenus.iterator();

        while(var6.hasNext()) {
            EruptMenu menu = (EruptMenu)var6.next();
            codeMap.put(menu.getCode(), menu);
            if (null != menu.getValue()) {
                valueMap.put(menu.getValue(), menu);
            }
        }

        this.sessionService.putMap("eruptAuth:menu-value-map:" + token, valueMap, (long)this.eruptUpmsConfig.getExpireTimeByLogin());
        this.sessionService.putMap("eruptAuth:menu-code-map:" + token, codeMap, (long)this.eruptUpmsConfig.getExpireTimeByLogin());
        this.sessionService.put("eruptAuth:menu-view:" + token, this.gson.toJson(this.eruptMenuService.geneMenuListVo(eruptMenus)), (long)this.eruptUpmsConfig.getExpireTimeByLogin());
    }

发现原因

本来是在1.8.3想使用xyz.erupt.annotation.fun.DataProxy#beforeFetch方法获取不同上级菜单(或者根据菜单的自定义参数)获取不同的数据,结果发现获取的菜单(^_^)是相同的,本来以为新版本解决了,看来还是没有的呀

UEditor 上传图片405

版本情况

JDK版本: openjdk_8_201
erupt版本: 1.11.1 (请确保最新尝试是否还有问题)

问题描述(包括截图)

  1. 复现代码

UEditor 上传图片405

  1. 堆栈信息

  2. 测试涉及到的文件(注意脱密)

弹出框位置偏上有点丑

版本情况

JDK版本: openjdk_8_201
erupt版本: 1.X.X (请确保最新尝试是否还有问题)

问题描述(包括截图)

image

tpl页面中如何进行跳转?跳转页面会进行嵌套

版本情况

JDK版本: openjdk_8_201
erupt版本: 1.7.2 (请确保最新尝试是否还有问题)

问题描述(包括截图)

  1. 复现代码
    页面中使用window.location.href无法进行跳转,能否获取上层iframe进行跳转

  2. 堆栈信息

  3. 测试涉及到的文件(注意脱密)

安全补丁修复

需要尽快升级lib 中的引用,安全风险还是需要解决的。

优化建议

版本情况

JDK版本: JDK1.8
erupt版本: 1.7.1

问题描述(包括截图)

一对多或多对多中,子表增加横向滚动条
1

表格列控制调整到操作区,减少空间占用,将修改后的结果保存到localStorage,每次打开页面从localStorage加载
2

  1. 堆栈信息

  2. 测试涉及到的文件(注意脱密)

树节点中有html属性的时候Ueditor和CKeditor无法显示内容

版本情况

JDK版本: openjdk 15.0.2
erupt版本: 1.6.7

问题描述(包括截图)

添加菜单类型为树,当树节点中有html属性的时候Ueditor和CKeditor都无法显示内容,textarea正常。

image

  1. 复现代码
@Entity
@Table(name = "demo_tree")
@Erupt(
        name = "树示例",
        orderBy = "TreeView.sort",
        tree = @Tree(id = "id", label = "name", pid = "parent.id"))
public class TreeView extends BaseModel {

    @EruptField(views = @View(title = "名称"), edit = @Edit(title = "名称", notNull = true))
    private String name;

    @EruptField(views = @View(title = "显示顺序"), edit = @Edit(title = "显示顺序"))
    private Integer sort;
    @Lob
    @EruptField(
            views = @View(title = "内容", type = ViewType.HTML, export = false),
            edit =
            @Edit(title = "内容", type = EditType.HTML_EDITOR, htmlEditorType = @HtmlEditorType(HtmlEditorType.Type.CKEDITOR)))
    private String content;
    @ManyToOne
    @EruptField(
            edit =
            @Edit(
                    title = "上级树节点",
                    type = EditType.REFERENCE_TREE,
                    referenceTreeType = @ReferenceTreeType(pid = "parent.id")))
    private TreeView parent;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "TreeView{" +
                "name='" + name + '\'' +
                ", parent=" + parent +
                '}';
    }

    public Integer getSort() {
        return sort;
    }

    public void setSort(Integer sort) {
        this.sort = sort;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public TreeView getParent() {
        return parent;
    }

    public void setParent(TreeView parent) {
        this.parent = parent;
    }
}
  1. 堆栈信息

  2. 测试涉及到的文件(注意脱密)

使用 @EruptField的search=@Search(vague = true)高级查询,查询数字类型区间无效

版本情况

JDK版本: Oracle JDK1.8.0_162
erupt版本: 1.10.6 (仍有问题)

问题描述(包括截图)

image
前端不提交查询参数

  1. 复现代码
@Erupt(name="采集器任务")
@Entity(name = "user_rules")
@DynamicUpdate	
@DynamicInsert
@Getter
@Setter
public class Test{
  	@EruptField(
	    		views = @View(title = "采集量", sortable = true,type = ViewType.AUTO),
	    		edit = @Edit(title = "采集量", readonly = @Readonly,search=@Search(vague = true),numberType = @NumberType(min=0))
	    		)
    @Column(name = "update_count")
    private Integer updateCount;
}
  1. 堆栈信息
    无异常

源码没有注释

版本情况

JDK版本: openjdk_8_201
erupt版本: 1.10.7 (请确保最新尝试是否还有问题)

问题描述(包括截图)

首先说明一下,作者整个框架的设计思路很厉害,代码写的也比我好多了,有点遗憾的是,核心源码没有注释,这对于想要贡献代码的人来说,是个门槛。

错误提示对话框存在未执行i18n的情况

版本情况

JDK版本:openjdk version "17.0.3" 2022-04-19 LTS
erupt版本: 1.10.10 (请确保最新尝试是否还有问题)

问题描述(包括截图)

提示信息未延i18n进行正常翻译

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.