사용자가 mysql 테이블을 업데이트 할 수 있도록 페이지를 만들고 싶습니다. 이 테이블은 클라이언트 관리자가 변경할 수 있으므로 테이블 스키마를 읽고 즉시 필드를 만들어야합니다. 그 일을위한 기본 코드는 How to create dynamic JSF form fields이고, 아약스 코드는 How to add ajax validation to programmatically generated primefaces component입니다. 동적으로 생성 된 프라임 입력 필드에 ajax를 추가하는 방법
은 (내가 primefaces을 사용하고 있습니다 주) 나는 다음과 같은 코드를 사용 개념 페이지의 증거를 만들려면 :for (int idx = 1; idx < 3; idx++) {
UIInput input = new InputText();
input.setId("text" + idx);
ValueExpression targetExpression = facesContext.getApplication().getExpressionFactory().createValueExpression(facesContext.getELContext(), "#{viewMakeFields.value}", String.class);
input.setValueExpression("value", targetExpression);
AjaxBehavior ab = new AjaxBehavior();
ab.setAsync(true);
ab.setProcess("text"+idx);
input.addClientBehavior("blur", ab); // "change" doesn't work either
form.getChildren().add(input);
}
다음, getter와 setter에, 나는 식별 할 구성 요소 ID를 받고 있어요 어떤 필드가 변경 : 아약스는 발사 내가 클릭 할 때 내가 얻을 버튼을 제출하지 않는
public static String getCallingComponentID() {
UIComponent component = UIComponent.getCurrentComponent(FacesContext.getCurrentInstance());
return component.getId();
}
public String getValue() {
String id = getCallingComponentID();
System.out.println("getValue " + id);
return text1;
}
public void setValue(String text1) {
String id = getCallingComponentID();
System.out.println("setValue " + id);
this.text1 = text1;
}
(나는 부분 및 완전을 제출 혼합 아는 것은 좋지 않다) :
INFO: getValue text1
INFO: getValue text2
INFO: getValue text1
INFO: getValue text2
INFO: setValue j_id1
INFO: setValue j_id1
INFO: getValue text1
INFO: getValue text2
두 가지 가능한 해결책을 볼 수 있습니다. 세터를 호출하는 구성 요소가 올바른 ID를 갖도록 아약스를 작동 시키거나 양식 제출을 통해 어떤 자식이 세터를 호출하는지 식별하십시오. 이전 버전은 뭔가가 변경 될 때까지 저장 버튼을 비활성화하려는 경우에 적합하지만이 시점에서 후자를 기꺼이 받아 들일 수 있습니다. 어떤 도움이라도 대단히 감사 할 것입니다.
나는 그 대답이 당신에게 적용된다고 생각하지 않습니다. AjaxBehavior는 JSF2 구문입니다. v1.x에서 지원되는 것으로는 생각하지 않습니다. – kolossus
2.0을 사용하여 양식을 만드는 것이 효과적입니다. (나는 2.2를 돌리고있다.) (이것은 작동하는 부분이다.) 문제는 필드에 변화가있을 때마다 화재로 아약스 호출을받는 방법이다. 나는 p : editor의 valueChangeListener와 비슷한 문제를 겪고 있지 않으며 여기에서도 잘 작동 할 수있는 총체적인 문제가 있습니다. 그러나 클라이언트 행동 청취자는 옳은 것처럼 보입니다. 나는 그것이 어떻게 작동하는지 잘못 이해하고 싶습니다. – wjr