0

我最近收到了一项业务需求,要求我的 JSF 应用程序在表本身中编辑数据表的行。

问题

该表由 JPA 实体列表支持,但可编辑字段属于它们的 -可选- 关联。因此,作为此类可编辑selectOneListbox字段的示例,如果我这样做:

<h:selectOneListbox id="rca" value="#{mainEntity.associatedEntity.rca}" converter="omnifaces.SelectItemsConverter">
    <f:selectItem itemValue="#{null}" itemLabel="" />
    <f:selectItems value="#{rcaOptions}" var="rca" itemLabel="#{rca}" itemValue="#{rca}" />
</h:selectOneListbox>

我最终会Target Unreachable, 'associatedEntity' returned null在提交表格时收到那些还没有关联实体的行,即使我为这些行selectOneListbox保持不变(选择了空选项)。

问题

  1. 我如何/在哪里/何时可以在提交表单时优雅地实例化新的子实体,仅针对用户操作的那些行(最好是无ajax),防止上面显示的错误?在第一次渲染表格时强制在模型中为所有行创建子实体是恕我直言的设计缺陷。

  2. 我如何以编程方式忽略selectOneListbox整个 JSF 生命周期中的这个 - 或任何其他输入字段 - 有条件地,就像该字段从未存在于请求中一样?我尝试实现几个转换器和验证器,但验证阶段仍在尝试获取值引用,无论我尝试什么,都会抛出上面显示的错误

4

0 回答 0