问题说明
我使用带有自建JSF UI的工作流引擎。引擎中的某些进程使用所谓的用户任务。这些任务在我的JSF前端中呈现,包含小型或中型表单,必须由用户填写。工作流前端应该是完全通用的 - 它不应该知道处理哪些任务或哪种类型的任务。因此,我想在JSF应用程序中定义这些任务表单。表单应该在相关过程中“生存”,因此在工作流引擎中。这很重要,因为否则每次对任何次要形式应用更改时都必须重新部署前端应用程序
所以我想从引擎中获取表单(基本上是.xhtml
文件)并将其作为简单的JSF视图添加到应用程序中。如果用户想要完成任务,则应拉取并呈现相应的JSF表单。
我想在运行时将JSF组件(或整个视图)集成到我的应用程序中,因此在构建或启动时完全不知道。
我怎样才能做到这一点?这甚至可能吗?
提前致谢!
答案 0 :(得分:2)
对于JSF组件,您绝对可以通过编程方式创建它们。这在这里得到解答:How to create dynamic JSF form fields。请注意,JSF 2.x的概念没有区别。只有时机;你需要在视图构建期间运行它。父项上的<f:event type="postAddToView">
是理想的挂钩。或者,在父的binding
属性的getter中懒惰地执行它,但是这会破坏视图范围,并且bean肯定需要请求作用域。
对于JSF视图,您需要创建自定义ResourceResolver
。具体示例可以在those answers中找到,其中包括Obtaining Facelets templates/files from an external filesystem or database