<h:inputText>
。 我知道以某种方式在JavaScript中应该可行。有人知道如何在JSF中执行此操作吗?我认为主要问题是如何通过q4312079q获取或设置新输入的值。
#1 楼
使用诸如<h:dataTable>
或<ui:repeat>
之类的迭代组件来显示动态调整大小的实体List
。使bean @ViewScoped
确保在同一视图上的回发中记住该列表,而不是一遍又一遍地重新创建。使用<h:dataTable>
的启动示例(使用<ui:repeat>
时,只需将<h:dataTable>
替换为<ui:repeat>
,将<h:column>
替换为例如<li>
或<div>
):<h:form>
<h:dataTable value="#{bean.items}" var="item">
<h:column><h:inputText value="#{item.value}" /></h:column>
<h:column><h:commandButton value="remove" action="#{bean.remove(item)}" /></h:column>
</h:dataTable>
<h:commandButton value="add" action="#{bean.add}" />
<h:commandButton value="save" action="#{bean.save}" />
</h:form>
被管理的bean:
@Named
@ViewScoped
public class Bean {
private List<Item> items;
@PostConstruct
public void init() {
items = new ArrayList<>();
}
public void add() {
items.add(new Item());
}
public void remove(Item item) {
items.remove(item);
}
public void save() {
System.out.println("items: " + items);
}
public List<Item> getItems() {
return items;
}
}
型号:
public class Item {
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String toString() {
return String.format("Item[value=%s]", value);
}
}
另请参见:
推荐的JSF 2.0 CRUD框架
如何创建动态JSF表单字段
如何实现
如何选择正确的bean作用域?
#2 楼
就像这样将表单标签绑定到bean属性
<form binding="#{myBean.myform}">...</form>
@ManagedBean("myBean")
public class Bean{
property HtmlForm myform;
}
事件发生时,创建输入组件的新实例
HtmlInputText input=new HtmlInputText();
并附加到您的表单上
myform.getChildren().add(input);
评论
请不要自己创建新的组件实例。首选方式是:FacesContext.getCurrentInstance()。getApplication()。createComponent(HtmlInputText.COMPONENT_TYPE);
–dforce
17 Mar 16 '17在7:41
#3 楼
使用h:dataTable
动态添加元素...拥有要为dataTable提供值的任何类型的列表... 在
h:dataTable
中...您可以在<h:column>
内包含要创建的元素标签将用于生成要动态创建的元素。
评论
欢迎参加Stack Overflow!到目前为止,这个答案似乎并没有增加任何实质性的内容。 Stack Overflow不是一个每个人都按协议重复的讨论论坛,而是一个问答网站,每个人都对协议表示赞成或不同意。如果您获得15点声望,则可以投反对票。
– BalusC
2013年1月24日11:12
评论
谢谢,我在想着同样的事情,只是想知道这是否是最好的方法= D
–ErVeY
2010年8月5日14:05
真正。唯一的选择是以编程方式创建组件,如new HtmlInputText()等等,但这只会在托管bean中导致讨厌和不透明的代码。
– BalusC
2010年8月5日14:11
嗨,@ BalusC,是否将字段“名称”添加到Item类?我需要将项目保存到数据库中,我也必须从数据库中读取它们。
–merveotesi
2011-12-26 12:00
谢谢,真的很有帮助。
–普利特曼尼
13年2月1日在15:19
我就是这样做的。但是,当我在添加的输入中输入新值并点击Submit时,后备bean上的列表不会更新。有什么事吗我的物品是List
–JSeven
2014年4月29日在20:47