在 selectOneRadio 按钮更改的 ajax 调用期间,我遇到了异常。
我正在使用 primefaces 3.3.1 和 JSF 2.0
例外:
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1937)
at com.sun.faces.renderkit.ServerSideStateHelper.getState(ServerSideStateHelper.java:263)
at com.sun.faces.renderkit.ResponseStateManagerImpl.getState(ResponseStateManagerImpl.java:97)
at com.sun.faces.application.view.StateManagementStrategyImpl.restoreView(StateManagementStrategyImpl.java:217)
at com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:177)
at com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:119)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:438)
at com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:144)
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:182)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:107)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
我的代码如下:
<h:panelGrid columns="3" style="align:center">
<h:outputText value="#{msg.accountCategory}" />
<p:spacer width="10px" />
<p:selectOneRadio id="singleJointAccountRadioId"
layout="horizontal"
value="#{captureAccountDetailBackingBean.accountCategory}">
<f:selectItems
value="#{captureAccountDetailBackingBean.accountcategoryList}">
</f:selectItems>
<p:ajax process="@this" update="secondAccountId" />
</p:selectOneRadio>
</h:panelGrid>
<h:panelGroup id="secondAccountId">
<h:panelGrid id="secondAccountHolderId" columns="2"
styleClass="float-left"
rendered="#{captureAccountDetailBackingBean.accountCategory eq 'Joint'}">
<p:graphicImage
value="/com/cas/pages/common/images/person_icon.jpg" />
<h:outputText value="#{msg.secondAccountHolder}" />
<h:panelGrid columns="2">
<h:outputText value="#{msg.nameofPerson}"
style="font-size:15px;" />
<span style="color: red;">*</span>
</h:panelGrid>
<p:inputText
value="#{captureAccountDetailBackingBean.accountHolder2.personName}"
styleClass="inputText-style" size="25" required="true" />
<h:panelGrid columns="2">
<p:selectOneRadio id="fatherHusbandRadioButtonId2"
layout="horizontal"
value="#{captureAccountDetailBackingBean.accountHolder2.personHusbandOrFatherID}">
<f:selectItems
value="#{captureAccountDetailBackingBean.holderRelationList}"></f:selectItems>
</p:selectOneRadio>
<span style="color: red;">*</span>
</h:panelGrid>
<p:inputText
value="#{captureAccountDetailBackingBean.accountHolder2.relativeName}"
styleClass="inputText-style" size="25" required="true" />
<h:panelGrid columns="2">
<h:outputText value="#{msg.address}" />
<span style="color: red;">*</span>
</h:panelGrid>
<p:inputTextarea
value="#{captureAccountDetailBackingBean.accountHolder2.personAddress}"
rows="3" autoResize="false" styleClass="inputText-style"
size="25" required="true" />
<h:panelGrid columns="2">
<h:outputText value="#{msg.dateOfBirth}" />
<span style="color: red;">*</span>
</h:panelGrid>
<p:calendar
value="#{captureAccountDetailBackingBean.accountHolder2.personDOB}"
navigator="true" showOn="button" size="6"
styleClass="inputText-style" required="true" />
<h:panelGrid columns="2">
<h:outputText value="#{msg.age}" />
<span style="color: red;">*</span>
</h:panelGrid>
<p:inputText
value="#{captureAccountDetailBackingBean.accountHolder2.personAge}"
size="2" styleClass="inputText-style" required="true" />
<h:panelGrid columns="2">
<h:outputText value="#{msg.pancardNumber}" />
<span style="color: red;">*</span>
</h:panelGrid>
<p:inputText
value="#{captureAccountDetailBackingBean.accountHolder2.personPanNo}"
size="15" styleClass="inputText-style" required="true" />
<h:panelGrid columns="2">
<h:outputText value="#{msg.mobileNumber}" />
<span style="color: red;">*</span>
</h:panelGrid>
<p:inputText
value="#{captureAccountDetailBackingBean.accountHolder2.personMobileNo}"
size="15" styleClass="inputText-style" required="true" />
</h:panelGrid>
</h:panelGroup>