如何在 JSF 中动态添加字段?

Posted

技术标签:

【中文标题】如何在 JSF 中动态添加字段?【英文标题】:How to Dynamically adding fields in JSF? 【发布时间】:2011-04-08 03:00:46 【问题描述】:

大家好,

我急切地寻求有关使用 JSF 添加和删除字段和行的帮助。我正在使用 ICE Faces 来获得丰富的 UI 外观。以下是我的问题:

    我必须连续添加一个文本框和两个按钮 (+) 和 (-)。 当用户单击 + 按钮时,应添加一个包含上述组件的新行。 当用户单击 - 按钮时,应从显示中删除相应的行。

我可以添加单个组件(如文本框)并将其删除。但是,这里我的挑战点是作为一行添加和删除。如何从 UI View Root 中删除该特定行(实例)。

我已经尝试了几次,但直到现在我都找不到解决方案。请向我建议可能的解决方案。

提前致谢, 克里希纳

【问题讨论】:

【参考方案1】:

宁可使用h:dataTable(或IceFaces 等效的ice:dataTable),它由List<Data> 连续对象支持,每个对象代表单行的数据。在 Add 上,只需将一个新的 Data 项目添加到列表中。在 Remove 上,只需从列表中删除选定的 Data 项目。

另见:

How to dynamically add new row to table? - 类似问题的详细回答 Using Datatables - 逐步展示如何在 JSF 1.x 中使用数据表。 CRUD datatable using @ViewScoped - JSF 2.0 CRUD 的简单示例

【讨论】:

您好 BalusC,谢谢您的回复。您的意思是我可以在 DataTable 行本身中添加任何组件吗?您是否有任何用于支持 bean 的示例代码或 API?那会很有帮助。我会尝试,如果我有任何疑问,请告诉您。谢谢,克里希纳 不,您不会添加整个组件。这不必要地过于复杂。只需在dataTable 正在使用的列表/数据模型中添加一个新项目。然后datatable 会将其显示为新行。我已经用一些有用的链接更新了答案。

以上是关于如何在 JSF 中动态添加字段?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 jsf 中动态添加 h:inputText 而不会丢失之前动态添加的 h:inputText 值? [复制]

在 JSF 2.0 中动态创建输入字段并将其链接到支持 bean

如何在 JSF 的表中动态添加一行?

将新组件动态添加到 JSF 组件树时重复 id

如何动态添加输入字段[重复]

如何在 Ajax 请求期间在 JSF2 中动态添加组件