次の質問があります!
バッキングBeanから動的に入力テキストを作成したいのですが、これらは実行時に作成される動的に作成されたタブの内部にあります。
input
対応するクラスを使用して、コンポーネントを動的に追加することができます。
valueExpresion
しかし、値をそれ自体にバインドする言語であるコンポーネントに値タグを追加することはできませんmanagedBean
。
このようにサマー化できるコードを見つけました。
@ManagedBean
@ViewScoped
public MyManagedBean(){
private TabView tabsi;
HtmlOutputLabel hol = new HtmlOutputLabel();
InputText txt2 = new InputText();
private String value;
/* getter and setters */
public void MyManagedBean{
tabsi = new TabView();
Tab tab1 = new Tab();
tab1.setTitle("Tab1");
Tab tab2 = new Tab();
tab2.setTitle("Tab2");
tabsi.getChildren().add(tab1);
tabsi.getChildren().add(tab2);
hol.setValue("label");
hol.setStyleClass("label");
txt2.setValueExpression("value",
TestController.getExpression("#{myManagedBean.value}"));
txt2.setValue(value);
tab1.getChildren().add(hol);
tab1.getChildren().add(txt2);
}
public static ValueExpression getExpression(String expression) {
FacesContext fc = FacesContext.getCurrentInstance();
ELContext ctx = fc.getELContext();
ExpressionFactory factory = fc.getApplication().getExpressionFactory();
return factory.createValueExpression(ctx, expression, Object.class);
}
public void test1() {
System.out.println(value);
}
}
コンポーネントを正常にビルドできましたが、バインドしてを設定できませんValueExpression
。ボタンからtest1関数を呼び出すと、次のように出力されます。null
どうすれば値をManagedBean
???にバインドできますか?