JSFコンポーネントを動的に追加できますか?フォームにボタンを追加するボタンのあるフォームが必要<h:inputText>
です。これは可能ですか?
私はこれがJavaScriptでどういうわけか可能になるはずだと知っています。JSFでこれを行う方法を知っている人はいますか?主な問題は、を介して新しい入力の値を取得または設定する方法だと思います#{value}
。
JSFコンポーネントを動的に追加できますか?フォームにボタンを追加するボタンのあるフォームが必要<h:inputText>
です。これは可能ですか?
私はこれがJavaScriptでどういうわけか可能になるはずだと知っています。JSFでこれを行う方法を知っている人はいますか?主な問題は、を介して新しい入力の値を取得または設定する方法だと思います#{value}
。
<h:dataTable>
またはのような反復コンポーネントを使用<ui:repeat>
して、動的にサイズ変更されたList
エンティティを表示します。Bean@ViewScoped
を作成して、何度も再作成するのではなく、同じビューのポストバック全体でリストが記憶されるようにします。
キックオフの例<h:dataTable>
(<ui:repeat>
単に replace <h:dataTable>
by<ui:repeat>
と<h:column>
eg <li>
orを使用する場合<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);
}
}
そんなはずだよ
フォーム タグを Bean プロパティにバインドする
<form binding="#{myBean.myform}">...</form>
@ManagedBean("myBean")
public class Bean{
property HtmlForm myform;
}
イベント時に、入力コンポーネントの新しいインスタンスを作成します
HtmlInputText input=new HtmlInputText();
フォームに添付します
myform.getChildren().add(input);
要素を動的に追加するために使用h:dataTable
します...dataTableに値を提供する任意のタイプのリストを用意します...
h:dataTable
...に要素タグを含めて内部に作成できます<h:column>
動的に作成する要素を生成するために使用されます。