2012-12-14 103 views
1

可能重复:
How to create dynamic JSF 1.2 form fields添加UI组件动态

我需要有一个功能,其中i可以添加一组形式的元素等(文本框,下拉菜单)每当时间我点击'添加'按钮。当我点击组件旁边的“删除”按钮时,它应该从页面中删除。 这是Java中需要的功能。 任何人都可以帮忙吗?

回答

1

这是一个工作示例。您应该根据您的要求实施您自己的代码。
textBox添加到您的页面,然后使用可迭代组件如ui:repeat,a4j:repeatc:forEach来创建多个组件。

<h:form id="test"> 
    <ui:repeat value="#{myBean.myObjects}" var="obj"> 
    <h:inputText value="#{obj.text}" /> 
    <h:commandButton action="#{myBean.remove(obj)}" value="Remove"/><br/> 
    </ui:repeat> 
    <br/> 
    <h:commandButton action="#{myBean.add()}" value="Add"/> 
</h:form> 

在您的托管bean中getMyObjects()方法应返回添加项目的列表。

public class MyBean { 
    private List<MyObject> objs = new ArrayList<MyObject>(); 

    public List<MyObject> getMyObjects() { 
    return objs; 
    } 

    public void remove(MyObject t) { 
    objs.remove(t); 
    } 

    public void add() { 
    objs.add(new MyObject()); 
    } 

    public class MyObject { 
    private String text; 

    public String getText() { 
     return text; 
    } 

    public void setText(String text) { 
     this.text = text; 
    } 

    } 
} 
+0

非常感谢。 标签是jsf标签?我想使用核心标签来实现,而不使用其他库,如primefaces,richfaces等。 – Tjs

+0

这是一个“Facelets”标签。我认为这不是你的问题。阅读更多在[这里](http://docs.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/facelets/ui/repeat.html)和[here](http://www.jsftoolbox。 com/documentation/facelets/10-TagReference/facelets-ui-repeat.html) – prageeth

+0

@Prageeth如果OP正在处理一个中等规模的项目并尝试在中间添加Facelets,这可能是一个问题。 –