我的问题有点复杂,我有一个托管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
}
答案 0 :(得分: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表达式定义的动态属性的组件。例如,国际化。
答案 1 :(得分:0)
你可能想看一下https://vaadin.com/,这无疑是一种不同的方法,但也许可以做你真正想要的和更多。
修改强>
由于您无法更改框架(这是可以理解的),请查看How to create dynamic JSF form fields。基本上所有必要的步骤都列在那里。您可以采用类似的方法来创建<div>
和<p>
标记,而不是表单元素。