我可以动态添加JSF组件吗?我需要一个带有按钮的表单,该按钮应该<h:inputText>在表单中添加一个.这可能吗?
我知道这应该可以在JavaScript中以某种方式实现.有人知道如何在JSF中这样做吗?我认为主要的问题是如何通过获取或设置新输入的值#{value}.
我发现了一些像这样的类似问题,但是有很多方法可以做到这让我更加困惑.
我们正在获取XML正在阅读的文件.其中XML包含有关需要显示的某些表单字段的信息.
所以我创建了这个DynamicField.java包含我们需要的所有信息的自定义:
public class DynamicField {
private String label; // label of the field
private String fieldKey; // some key to identify the field
private String fieldValue; // the value of field
private String type; // can be input,radio,selectbox etc
// Getters + setters.
}
Run Code Online (Sandbox Code Playgroud)
所以我们有一个List<DynamicField>.
我想迭代这个列表并填充表单字段,使它看起来像这样:
<h:dataTable value="#{dynamicFields}" var="field">
<my:someCustomComponent value="#{field}" />
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)
然后<my:someCustomComponent>将返回相应的JSF表单组件(即label,inputText)
另一种方法是只显示<my:someCustomComponent>,然后返回一个HtmlDataTable带有表单元素.(我认为这可能更容易).
哪种方法最好?有人可以告诉我一些链接或代码,它显示我如何创建这个?我更喜欢完整的代码示例,而不是像"你需要一个子类javax.faces.component.UIComponent" 这样的答案.