#url #websphere-liberty #rerender #jsf-2.3
#url #websphere-liberty #повторный запуск #jsf-2.3
Вопрос:
Задан URL-адрес с параметрами, такими, что:
page.xhtml?param1=valueamp;amp;param2=value
Похоже, что после отправки формы на этой странице возникает следующее исключение и трассировка стека:
java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 0
at org.apache.myfaces.context.servlet.ServletExternalContextImpl.encodeURL(ServletExternalContextImpl.java:906)
at org.apache.myfaces.context.servlet.ServletExternalContextImpl.encodeActionURL(ServletExternalContextImpl.java:364)
at javax.faces.context.ExternalContextWrapper.encodeActionURL(ExternalContextWrapper.java:80)
at org.apache.myfaces.shared.renderkit.html.HtmlFormRendererBase.encodeBegin(HtmlFormRendererBase.java:88)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:597)
at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:527)
at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:551)
at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:551)
at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1897)
Похоже, что это произойдет при повторном рендеринге формы.
Использование ajax для сужения области повторного рендеринга позволяет мне обойти проблему.
С учетом сказанного, мне интересно, есть ли другие варианты решения этой проблемы?
Использование Liberty 18.0.0.3 от IBM, JSF 2.3 от IBM [1.0.0]
Комментарии:
1. Я не могу воспроизвести эту ошибку. Можете ли вы предоставить небольшое приложение?
Ответ №1:
Этой версии WebSphere Liberty почти 3 года, поэтому я бы сначала рекомендовал перейти на последнюю версию WebSphere Liberty (или Open Liberty) и проверить, была ли проблема с тех пор решена.
С архитектурой нулевой миграции Liberty переход на последнюю версию должен быть довольно плавным …. и вы получите не только исправления ошибок и безопасности на ~ 3 года, но и улучшения производительности и разработки.
Ответ №2:
Похоже, эта проблема уникальна для конфигураций моего проекта. После некоторых выборочных удалений и добавлений было обнаружено, что виновником был обработчик представления, ответственный за повторное прикрепление параметров запроса обратно к URL-адресу.
Строка параметра
param1=valueamp;amp;param2=value
Будет повторно присоединен как
=amp;param1=valueamp;param2=value
Что, в свою очередь, вызвало исключение кодирования.
Спасибо и приношу извинения.