JSF 2.0将动态表单保存到数据库[重复]

Posted

技术标签:

【中文标题】JSF 2.0将动态表单保存到数据库[重复]【英文标题】:JSF 2.0 Saving dynamic form to a database [duplicate] 【发布时间】:2011-04-11 19:58:06 【问题描述】:

我正在使用 JSF 2.0 和 Hibernate 编写一个用作管理面板的应用程序。我有一个带有 JSF 表单的 JSP 页面,其中的元素是使用 javascript 动态添加的(具体来说是 jQuery)。所以我不能对我必须处理多少数据做出任何假设。我有一个托管 bean,但我不知道如何为要保存在数据库中的动态字段放置 getter 和 setter。该解决方案似乎使用列表而不是单个元素,但是如何使用 JSF 元素的值标记?会不会是这样的:

<h:form>
<h:inputText id="i1" value="#UserBean.list" /> 
<h:inputText id="i2" value="#UserBean.list" />
<h:commandbutton id="submit" value="Submit" action="#UserBean.submit"/>
</h:form>

还有托管 bean:

@ManagedBean(name="UserBean")
@RequestScoped
public class UserBean 

   public UserBean() 
       List<String> list = null;



    public List getList() 
    return list;

    public List setList(List<String> newlist) 
    list = newList;



但是,上面的代码似乎不正确,当然也不起作用。我需要将 inputtext 的两个或多个值绑定到同一个列表。有没有人有任何建议如何解决它?提前致谢。 问候, 粗鲁。

【问题讨论】:

【参考方案1】:

您不能直接使用 jQuery 动态添加 JSF 组件。 jQuery 所能做的就是在客户端遍历和操作“普通的”html DOM 树。它完全没有 JSF 组件树的概念,因为它是在服务器端生成和维护的。反过来,JSF 对由“普通”jQuery/JavaScript 完成的 HTML DOM 树中的状态更改一无所知,因为它不会通知服务器端的 JSF 更改。 JSF 依赖 JSF 组件树来处理表单提交,而不是 HTML DOM 树。

您想使用 JSF 动态更改 JSF 组件树。由于这将是一个很长的故事要详细解释,这里有一些链接指向我之前回答的类似问题,以帮助您入门:

How to add JSF components dynamically - 这应该正是您所需要的。 How to create dynamic JSF form - 以“另一种方式”来做,以防万一您感兴趣。

【讨论】:

【参考方案2】:

您可以使用 primefaces 扩展 dynaform。您可以在其中创建动态表单。 看这个链接

http://fractalsoft.net/primeext-showcase-mojarra/views/dynaForm.jsf

【讨论】:

以上是关于JSF 2.0将动态表单保存到数据库[重复]的主要内容,如果未能解决你的问题,请参考以下文章

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

JSF 2.0 动态删除组件

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

在 JSF 中动态添加文本字段 [重复]

如何遍历一组动态表单输入并将它们插入到多个表中?

在JSF中动态创建表列