【JPIERE-0652(v12)】カタカナでのメニュー検索エラーへの対応

 IDEMPIERE-6364:Make Menu Search Highlight Accent Insensitiveの改修が入ったことにより、カタカナで検索するとjava.lang.StringIndexOutOfBoundsExceptionが出る時があります。多分、英語などのアルファベットを使用する言語では問題ないのだと思いますので、日本のローカライズ対応の一環としてJPiereのカスタマイズのひとつとして対応したいと思います。

エラー表示

16:46:57.701===========> UiEngineImpl.handleError: [934]

java.lang.StringIndexOutOfBoundsException: begin 0, end 8, length 7

at java.base/java.lang.String.checkBoundsBeginEnd(String.java:4601)

at java.base/java.lang.String.substring(String.java:2704)

at org.adempiere.webui.apps.MenuSearchController$MenuItemRenderer.render(MenuSearchController.java:753)

at org.adempiere.webui.apps.MenuSearchController$MenuItemRenderer.render(MenuSearchController.java:1)

at org.zkoss.zul.Listbox$Renderer.render(Listbox.java:2762)

at org.zkoss.zul.Listbox.doInitRenderer(Listbox.java:2572)

at org.zkoss.zul.Listbox.onInitRender(Listbox.java:2523)

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.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:3151)

at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:3082)

at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:138)

at org.zkoss.zk.ui.impl.UiEngineImpl.processEvent(UiEngineImpl.java:1888)

at org.zkoss.zk.ui.impl.UiEngineImpl.process(UiEngineImpl.java:1660)

at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1323)

at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:528)

at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:404)

at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:412)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:523)

デモフィケーション箇所

MenuSeatchController.java#MenuItemRenderer#render()

MenuSeatchControllerクラスの内部クラスとして実装されているMenuItemRendereクラスのrender()メソッドをモディケーションしています。