【问题标题】:JSF: how to bind with dynamically generated html content?JSF:如何绑定动态生成的 html 内容?
【发布时间】:2012-06-21 09:24:24
【问题描述】:

我的 jsf 页面上有一个带有一些 selectonemenus 的字段集。我在单击链接时使用 jquery 克隆字段集,类似于“添加另一行”(逻辑类似于:Using jQuery to dynamically add form fields (or fieldsets) based on a dropdown box value),我可以添加无限字段集,现在如何绑定或获取这个动态生成的表单内容的值在我的控制器上。我使用 f:ajax 提交表单。我检查了这个:How do I create form controls dynamically with DHTML and deal all those with JSF?,它说不平凡,有没有简单的方法可以在我的 JSF 上获取这些值。谢谢。

【问题讨论】:

    标签: jquery jsf-2


    【解决方案1】:

    您需要通过 JSF 而不是 jQuery“克隆”字段集(<ui:repeat><h:dataTable> 在这里很有帮助),或者删除 JSF 并改用基于请求的 MVC 框架。

    如果您不想放弃 JSF 并且出于某种原因想要坚持使用 jQuery 方式,那么您将不得不自己重写大量样板代码,这些代码与 JSF 在幕后所做的工作基本相同为了收集提交的值、转换/验证它们、更新模型值和调用任何业务操作。

    另见:

    【讨论】:

    • 您好 BalusC,感谢您的回复。我有一个基本的疑问。我使用 jQuery 添加的 html 控件是否会成为该视图的组件树的一部分,即请求的一部分?是不是它不会被任何 JSF UI* 组件标识,因此不能参与组件生命周期 rt 的任何阶段?但是是否有一些快速肮脏的方法来获取附加控件的值,绕过生命周期行为等,或者是太多的肮脏工作。如果我的问题很愚蠢,我很抱歉。
    • 它不会以任何方式成为 JSF 树的一部分。您只是在客户端完全操作 HTML DOM 树。 JSF 是一个 HTML 代码生成器,浏览器检索的所有内容都是纯 HTML。一旦 HTTP 响应完成,JSF 就完成了它的工作。将来在不使用 JSF 自己的 ajax 工具的情况下对 HTML DOM 树的任何客户端更改都不会反映在 JSF 组件树中。只需使用 JSF 而不是 jQuery。另请参阅最后一个“另请参阅”链接,以根据具体示例获得一些见解。
    猜你喜欢
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 2020-06-11
    • 2014-02-23
    • 2015-04-13
    • 2021-02-08
    • 1970-01-01
    相关资源
    最近更新 更多