0

我的问题有点复杂,我有一个托管 bean,可能是一个会话范围的 bean,现在在这个 bean 中,我检索存储在数据库中的有关某些元素(它们的宽度、高度、它们的 X、Y 坐标等)的信息,但是这些元素的编号是动态存储的,这意味着它们没有一定的编号,而且它们还可能嵌套了另一个元素。

就像存储 div 的位置和坐标,以及其中的 p 元素以及它们的信息一样,现在我想使用托管 bean 来相应地创建元素。

1-我应该使用什么?(现在我正在使用 JSF 2 Facelets 和 Javascript/jQuery)。

2-使用您推荐的工具的正确方法是什么。

我正在 JSF 页面中寻找类似的东西

这可以使用 jsf 和 javascript/jquery 来完成吗?

for(every i in elements.div)
{
     create a div element
    then
     for(every i in div.p )
     create a p element in that div
     width of p element = p.width
    .
    .
    .
    load all element info 
}
4

2 回答 2

1

您可以使用组件绑定。在您的 JSF 页面上,您引用了您的支持 bean,它提供了准备好的 JSF 树组件。

<p>Here comes a dynamic content</p>
<h:panelGroup binding="#{myBackingBean.generatedElements}"/>

在您的支持 bean 中,您可以根据需要创建和嵌套元素

...
public class MyBackingBean {
...

private HtmlPanelGroup generatedElements = new HtmlPanelGroup();

public void init() {
     for (Element e : myElements) {
         // Take any element type you want
          HtmlOutputText subElement = new HtmlOutputText();
          subElement.setValue(e.getText());
          generatedElements.getChildren().add(subElement);
     }
}

您还可以使用subElement.setValueExpression方法来构建具有由 JSF 表达式定义的动态属性的组件。例如国际化。

于 2012-07-06T09:43:31.720 回答
0

您可能想看看https://vaadin.com/,这无疑是一种不同的方法,但可能会做您真正想要的,甚至更多。

编辑
由于您无法更改框架(这很容易理解),请查看How to create dynamic JSF form fields。基本上所有必要的步骤都列在那里。您可以采用类似的方法来创建<div><p>标记而不是表单元素。

于 2012-07-06T09:47:29.207 回答