这个问题在这里已有答案:
单击commandButton应该在ManagedBean中触发一个动作:向当前页面添加一个新的“outputText”组件 .
总体思路是通过用户操作动态更改页面,使用服务器端操作,因为添加到页面的新元素需要布置数据库中的数据 .
-
如何在jsf / primefaces中从托管bean向页面添加组件?假设元素应该添加到现有的div中,例如:
<div id="placeHolder">
</div>
(如果需要,可以将此div更改为jsf面板)
注意:如果替代方法更好地达到相同的效果,我很乐意了解它们 .
2 回答
除了您发布的解决方案之外,我会为您提供另一种解决方案 . 基本上它有一个给定的输出
List
,每按一次按钮就会增加 . 这应该呈现与您声明的解决方案完全相同的DOM树:除了更简单的恕我直言,它有一个主要的优势: it doesn't couple your server side code to JSF implicit API . 如果希望它是CDI托管bean,则可以更改
@ManagedBean
的@ManagedBean
注释 .解决方案:
这是一个jsf页面,每次单击时都会创建一个新的div:
托管Bean:
看到这个使用动态生成组件逻辑构建的应用程序:https://github.com/seinecle/Tiles