다음 질문이 있습니다!동적으로 입력 텍스트 만들기
내 백킹 빈에서 inputtext를 동적으로 생성하고 싶습니다. 실행 시간에 생성되는 동적으로 생성 된 탭 안에 있습니다.
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
에 바인딩 할 수 있습니까 ???
당신은 TestController.getExpression ("# {myManagedBean.value}"))를 호출합니다. MyManagedBean의 생성자에서. 당신은 건설중인 무언가로부터 어떤 것도 얻을 수 없습니다. 항상 null를 돌려줍니다. – faissal
생성자에서 나는 바인딩 될 값을 stablish! 그래서 실제로 actionListener를 시작하기 전까지는 호출되지 않습니다. 내 경우에는 제가 누르는 버튼입니다. –