我正在寻找有关如何实施以下内容的最佳实践指南。我正在使用 JSF2、Spring 3、PrimeFaces 3.3、MyBatis。
要求:
我有一个数据输入屏幕,其中的输入字段链接到 VO 对象,VO 对象是托管 bean 上的一个属性。用户可以创建新记录,也可以搜索现有记录进行编辑。
选择现有的记录选项时,将出现一个对话框,在该对话框中,用户可以在其中搜索和检索可从中选择的潜在记录列表。
他们一次只能选择一条记录进行编辑。一旦他们做出选择,对话框就会关闭,VO 对象会填充所选数据,供用户编辑。
问题:
当提交搜索表单以检索用于编辑的潜在记录列表时,VO 对象尚未初始化,并导致 ProcessValidationPhase 以“目标无法访问”使该过程失败。
实现此方案的最佳方法是什么?VO 对象是否应该在托管 bean 中使用空白值初始化?或者是否应该在托管 bean 的初始化期间调用 VO 对象的初始化方法?
数据条目.XHTML
主要数据输入字段:
<p:panelGrid id="dataEntry">
<p:row>
<p:column style="width:200px;">
<h:outputLabel value="Field 1:"/></p:column>
<p:column>
<p:inputText value="#{managedBean.dataEntryVo.field1}"
style="width:50px;"
disabled="true"/>
</p:column>
</p:row>
<p:row>
<p:column>
<h:outputLabel value="Field 2:"/>
</p:column>
<p:column>
<p:inputText value="#{managedBean.dataEntryVo.field2}"
style="width:50px;"
disabled="true"/>
</p:column>
</p:row>
</p:panelGrid>
对话框上的命令按钮用于检索可能的记录列表以供选择进行编辑:
<p:commandButton id="retrieveDataCb"
value="Retrieve"
actionListener="#{managedBean.retrieveDataEntryList}"
update=":dataEntryForm:retrievedList">
</p:commandButton>
非常感谢