miexiaomie 发表于 2023-5-31 15:45:44

台账功能报错

在台账页面,部分流程应用的数据正常,部分流程应用无法打开,提示String index out of range: 0,后台报错提示如下:

java.lang.StringIndexOutOfBoundsException: String index out of range: 0
      at java.lang.StringLatin1.charAt(StringLatin1.java:47) ~[?:?]
      at java.lang.String.charAt(String.java:693) ~[?:?]
      at com.x.custom.index.assemble.control.jaxrs.index.BaseAction.lambda$getDynamicFieldList$8(BaseAction.java:174) ~

是否存在未知bug呢。



论坛管理员 发表于 2023-6-1 09:57:17

详细截图一下,具体是哪里,怎么操作的?

miexiaomie 发表于 2023-6-1 10:51:52

本帖最后由 miexiaomie 于 2023-6-1 10:55 编辑

论坛管理员 发表于 2023-6-1 09:57
详细截图一下,具体是哪里,怎么操作的?
前台截图如上,点开台账,选择一个流程应用,就报错了,报错接口http://serveruri/x_custom_index_assemble_control/jaxrs/index?v=o2oa

xadmin 发表于 2023-6-1 17:43:37

miexiaomie 发表于 2023-6-1 10:51
前台截图如上,点开台账,选择一个流程应用,就报错了,报错接口http://serveruri/x_custom_index_assembl ...

这个需要您把具体日志发出来看看

miexiaomie 发表于 2023-6-8 10:10:36

本帖最后由 miexiaomie 于 2023-6-8 10:13 编辑

xadmin 发表于 2023-6-1 17:43
这个需要您把具体日志发出来看看
2023-06-08 10:07:28.014 ERROR com.x.custom.index.assemble.control.jaxrs.index.IndexAction - id:2f9457e1-37ce-492a-bc51-3050b0196750, name:com.x.custom.index.
assemble.control.jaxrs.index.IndexAction, message:String index out of range: 0, exception:java.lang.StringIndexOutOfBoundsException, id:2f9457e1-37ce-492a-bc51-3050b0196750, name:com.x.custom.index.as
semble.control.jaxrs.index.IndexAction, message:String index out of range: 0, exception:java.lang.StringIndexOutOfBoundsException, person:信管测试@xinguantest@P, method:POST, request:http://server/x_custom_index_assemble_control/jaxrs/index?v=o2oa, remoteHost:xxxxx, emoteAddr:xxxx, head:Authorization:xxxxx
Origin:http://server
Cookie:xxxxxxx;
Accept:text/html,application/json,*/*
Connection:keep-alive
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36
Referer:http://server/
Host:server
Accept-Language:zh-CN
Accept-Encoding:gzip, deflate
Content-Length:206
Content-Type:application/json; charset=UTF-8, body:{
"directoryList": [
    {
      "category": "processPlatform",
      "key": "28b5c00b-ae0d-4e07-80fa-9c9da2150beb",
      "name": "销售流程"
    }
],
"page": 1,
"size": 50,
"fixedFieldList": [],
"dynamicFieldList": [],
"filterList": []
}..
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
      at java.lang.StringLatin1.charAt(StringLatin1.java:47) ~[?:?]
      at java.lang.String.charAt(String.java:693) ~[?:?]
      at com.x.custom.index.assemble.control.jaxrs.index.BaseAction.lambda$getDynamicFieldList$8(BaseAction.java:174) ~
      at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[?:?]
      at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[?:?]
      at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) ~[?:?]
      at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[?:?]
      at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
      at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[?:?]
      at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
      at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[?:?]
      at com.x.custom.index.assemble.control.jaxrs.index.BaseAction.lambda$getDynamicFieldList$11(BaseAction.java:180) ~
      at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) ~[?:?]
      at java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357) ~[?:?]
      at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485) ~[?:?]
      at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
      at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) ~[?:?]
      at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) ~[?:?]
      at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
      at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497) ~[?:?]
      at com.x.custom.index.assemble.control.jaxrs.index.BaseAction.getDynamicFieldList(BaseAction.java:173) ~
      at com.x.custom.index.assemble.control.jaxrs.index.ActionPost.execute(ActionPost.java:103) ~
      at com.x.custom.index.assemble.control.jaxrs.index.IndexAction.post(IndexAction.java:54) ~
      at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
      at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
      at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
      at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
      at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) ~
      at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:124) ~
      at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:167) ~
      at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$VoidOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:159) ~
      at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:79) ~
      at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:475) ~
      at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:397) ~
      at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) ~
      at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:255) ~
      at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) ~
      at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) ~
      at org.glassfish.jersey.internal.Errors.process(Errors.java:292) ~
      at org.glassfish.jersey.internal.Errors.process(Errors.java:274) ~
      at org.glassfish.jersey.internal.Errors.process(Errors.java:244) ~
      at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265) ~
      at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:234) ~
      at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684) ~
      at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394) ~
      at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346) ~
      at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:366) ~
      at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:319) ~
      at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) ~
      at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:763) ~
      at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1633) ~
      at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:228) ~
      at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~
      at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1609) ~
      at com.x.base.core.project.jaxrs.CipherManagerUserJaxrsFilter.doFilter(CipherManagerUserJaxrsFilter.java:51) ~
      at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~
      at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1609) ~
      at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:561) ~
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~
      at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602) ~
      at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~
      at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~
      at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1612) ~
      at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~
      at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1434) ~
      at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~
      at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) ~
      at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1582) ~
      at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~
      at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1349) ~
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~
      at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:59) ~
      at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:716) ~
      at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~
      at org.eclipse.jetty.server.Server.handle(Server.java:516) ~
      at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383) ~
      at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:556) ~
      at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375) ~
      at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273) ~
      at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~
      at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~
      at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~
      at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) ~
      at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) ~
      at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) ~
      at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) ~
      at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375) ~
      at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:773) ~
      at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:905) ~
      at java.lang.Thread.run(Thread.java:829) ~[?:?]

Ray 发表于 2023-6-9 11:09:32

这是一个bug,原因是没有对空字符串进行判断

                }).collect(Collectors.groupingBy(Pair::first)).entrySet().stream()
                              .sorted(Comparator.comparing(Map.Entry::getKey)).forEach(o -> o.getValue().stream().map(Pair::second)
                                                .map(p -> Pair.of(p.getName().charAt(0), p)).map(p -> {
                                                      if (Character.UnicodeBlock.of(p.first()) == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS) {
                                                                return Pair.of(0, p.second());
                                                      } else {
                                                                return Pair.of(1, p.second());
                                                      }
                                                }).collect(Collectors.groupingBy(Pair::first)).entrySet().stream()
                                                .sorted(Comparator.comparing(Map.Entry::getKey))
                                                .forEach(p -> p.getValue().stream().map(Pair::second)
                                                                .sorted(Comparator.nullsLast(Comparator.comparing(WoField::getName)))
                                                                .forEach(os::add)));
中的 .map(p -> Pair.of(p.getName().charAt(0), p)).map(p -> { 这一行
这段代码是用于防止cjk字符和拉丁字符混排导致的混乱,这里对cjk和拉丁分组排序再组合.
非常感谢您的指正.我们将在尽快修复并发布到新的更新版本中.

miexiaomie 发表于 2023-6-9 11:15:50

Ray 发表于 2023-6-9 11:09
这是一个bug,原因是没有对空字符串进行判断




是要重新安装台账还是?

Ray 发表于 2023-6-9 16:56:16

会发布新的版本修复.需要重新安装.

miexiaomie 发表于 2023-6-9 16:58:09

Ray 发表于 2023-6-9 16:56
会发布新的版本修复.需要重新安装.

什么时候发布?

xadmin 发表于 2023-6-9 17:19:11

miexiaomie 发表于 2023-6-9 16:58
什么时候发布?

还未定时间,您可以关注一下我们的官网的平台下载页面
https://www.o2oa.net/
页: [1] 2
查看完整版本: 台账功能报错