如何使用JQuery动态添加Primefaces输入字段

我正在尝试从Primefaces动态添加标签和文本字段到我的网页。 我想使用JQuery。 到目前为止,我只使用Primefaces实现了相同的任务,并且它运行得很好但是我想要避免一些行为。

    $(document).ready(function() { var counter = 2; $("#addButton").click(function(){ var newTextBoxDiv = $(document.createElement('div')).attr("id",'TextBoxDiv' + counter); <!-- This line causes trouble. If I use it nothing is rendered on page. If I use  the page is rendered but the functionality does not work --> newTextBoxDiv.html("

"); newTextBoxDiv.appendTo("#TextBoxesGroup"); counter++; }); });

我会很感激关于这个主题的教程的一些提示,或者我的代码中是否是一个简单的错误。 这个问题的解决方案。 先感谢您 :)

看起来你完全错过了JSF的观点,对Web开发来说还是个新手。 JSF是一个服务器端语言/框架,它生成HTML代码(在浏览器中右键单击页面并执行查看源代码 ,您现在看到它吗?没有单个JSF标记,它是一个和所有HTML)。 jQuery是一种客户端语言,仅适用于HTML DOM树。 不是已知的HTML元素。 浏览器不知道如何处理它。 它只知道像和朋友一样的HTML。

您需要以“JSF-ish”的方式挽救function需求。 这是一个启动示例:

      

 @ManagedBean @ViewScoped public class Bean implements Serializable { private List items; @PostConstruct public void init() { items = new ArrayList<>(); } public void add() { Item item = new Item(); item.setLabel("label" + items.size()); items.add(item); } public void remove(Item item) { items.remove(item); } public List getItems() { return items; } } 

 public class Item { private String label; private String value; // Let your IDE generate getters/setters/equals/hashCode. } 

就这样。 通过添加另一个指向save()方法的命令按钮,可以将所有的JavaScript乱七八糟,并且所有内容都可以在服务器端进行保存,该方法将items变量进一步传递给EJB / service / DAO类。

否则,如果你真的想以jQuery方式实现它,那么你应该完全放弃JSF并去寻找像Spring MVC这样的基于请求的东西。 您只需要记住,您自己要写下所有HTML / CSS / JS。

也可以看看:

  • 当用户可以通过CSS,HTML,JavaScript,jQuery实现UI时,JSF的需求是什么?