【发布时间】:2013-09-27 20:40:36
【问题描述】:
我有一个 JSF 应用程序,我在其中使用 JSF h:inputText 来接受用户数据。我使用托管 bean 将输入字段绑定到 java 对象,这很正常。
使用顺序 ajax 调用定期保存在 HTML 表单中输入的数据。有时定期保存失败,在查找映射对象到输入字段时出错(错误消息说它找不到 java 对象)。尽管应用程序中没有任何更改,但下一次保存数据的调用可能不会发生这种情况。我无法弄清楚重现此错误的模式。当我尝试调试打印对象值时,它也可以正常工作。在输入值映射中,我有嵌套的对象,我怀疑这些对象可能与错误有关。
这是JSF页面中的代码sn-p。
<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' 解析为 null 在 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(UIInput.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) 在 com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
我会在这里遗漏什么?
【问题讨论】:
-
看起来您正试图访问一个列表或数组(parts[0])。您确定该列表确实包含索引零的值吗?