url - JSF 2.3:“数组索引超出范围”在呈现带有包含“&&”的 Url 的表单时
问题描述
给定一个带有参数的 url,例如:
page.xhtml?param1=value&¶m2=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 来缩小重新渲染的范围可以让我绕过这个问题。
话虽如此,我想知道是否有更多选项可以解决此问题?
使用 IBM 的 Liberty 18.0.0.3、IBM 的 JSF 2.3 [1.0.0]
解决方案
看来这个问题是我的项目配置所独有的。在进行了一些选择性删除和添加之后,发现负责将请求参数重新附加到 url 的视图处理程序是罪魁祸首。
参数字符串
param1=value&¶m2=value
将重新附加为
=¶m1=value¶m2=value
这反过来又导致了编码异常。
谢谢你和道歉。
推荐阅读
- sql - 多订单应该怎么做?
- cloud-foundry - 客户端凭据授予类型返回的令牌没有读取权限
- r - 将因子转换为 R 中的日期以创建虚拟变量
- python - 将 tensorflow lite 模型导入图形
- python - 在 Pandas Dataframe 中的元组中搜索字符串
- javascript - 如何匹配对象的多个属性
- javascript - firebase/firestore 将用户保存到集合
- powershell - 如何在 PowerShell 中创建 JSON?
- javascript - 从数组创建组合并将其转换为 javascript 中的多维排列?
- r - 如何从 R Shiny selectInput() 中的列表中提取元素名称而不是值?