我有一个 JSF 应用程序,我在其中使用 JSF h:inputText 来接受用户数据。我使用托管 bean 将输入字段绑定到 java 对象,这很正常。
使用顺序 ajax 调用定期保存在 HTML 表单中输入的数据。有时定期保存失败,在查找映射对象到输入字段时出错(错误消息说它找不到 java 对象)。尽管应用程序中没有任何更改,但下一次保存数据的调用可能不会发生这种情况。我无法弄清楚重现此错误的模式。当我尝试调试打印对象值时,它也可以正常工作。在输入值映射中,我有嵌套的对象,我怀疑这些对象可能与错误有关。
这是 JSF 页面中的代码片段。
<c:forEach var="doc"
items="#{trim.trim.act.relationship['patientSurgeons'].act.relationshipsList['physician']}"
varStatus="physicianIndex">
<table>
<tr>
<td><h:inputText
id="firstName#{physicianIndex.index}" placeholder="first name"
value="#{doc.act.participation['surgeon'].role.player.name.EN['L'].parts[0].ST.value}"
class="sidebyside small" />
</td>
这是异常堆栈跟踪的方式
15:52:55,239 错误 [[Faces Servlet]] Servlet.service() for servlet Faces Servlet 抛出异常 javax.el.PropertyNotFoundException: /META-INF/tags/wizard/inputTextWithPlaceholder.xhtml @15,86 value="#{ value}": /wizard/questionnaireWiz/patientPhysicians.xhtml @73,36 value="#{doc.act.participation['surgeon'].role.player.name.EN['L'].parts[0]。 ST.value}":目标无法到达,标识符 'doc' 在 com.sun.facelets.el.TagValueExpression.getType(TagValueExpression.java:62) 在 com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue( HtmlBasicInputRenderer.java:81) 在 javax.faces.component.UIInput.getConvertedValue(UIInput.java:934) 在 javax.faces.component.UIInput.validate(UIInput.java:860) 在 javax.faces.component.UIInput.executeValidate (用户界面输入。java:1065) 在 javax.faces.component.UIInput.processValidators(UIInput.java:666) 在 javax.faces.component.UIForm.processValidators(UIForm.java:229) 在 javax.faces.component.UIComponentBase.processValidators(UIComponentBase .java:1033) 在 javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:662) 在 com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100) 在 com.sun.faces.lifecycle。 LifecycleImpl.phase(LifecycleImpl.java:251) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)UIComponentBase.processValidators(UIComponentBase.java:1033) 在 javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:662) 在 com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100) 在 com.sun .faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244 )UIComponentBase.processValidators(UIComponentBase.java:1033) 在 javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:662) 在 com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100) 在 com.sun .faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244 )117) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)117) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
我在这里能错过什么?