rich : dataTable 렌더러를 확장하여 일부 기능을 추가하려고합니다. 좀 더 구체적으로 말하자면 ijax 호출을 트리거하는 헤더 열에 링크를 렌더링하여 백킹 빈에서 액션을 트리거하고 싶습니다.구성 요소 렌더러에서 a4j : commandLink를 동적으로 만드는 방법은 무엇입니까?
필자는 dataTable의 렌더러를 수정하여 a4j : commandLink 인스턴스를 인스턴스화하고 추가하는 것이 주된 생각이었습니다. 일부는 작동하지만 링크는 올바르게 렌더링되지만 연결된 액션은 호출되지 않고 추가 된 매개 변수 assignemnt가 수행되지 않습니다. 또한 실제로 볼 수있는 부분을 실행하고 렌더링 할 수 없습니다. 설정 한 값이 무시되는 것처럼 보입니다. 예를 들어 @all을이 두 속성의 값으로 지정하면 여전히 부분 응답을 포함합니다. 내 페이지의 아주 작은 부분).
이
내가 링크를 만드는 데 사용하는 코드입니다 :UICommandLink l = (UICommandLink) context.getApplication().createComponent(UICommandLink.COMPONENT_TYPE);
l.setTransient(false);
l.setRender("@all");
l.setExecute("@all");
l.setActionExpression(ULHelper.createMethodExpression("#{orderBy.toggle('"+ sortName + "')}", null, String.class);
l.setParent(uiColumn);
l.getChildren().add(headerFacet);
l.encodeAll(context);
uiColumn UIColumn의 인스턴스 인을 headerFacet 링크 내에서 렌더링해야 할 텍스트입니다.
링크가 올바르게 표시되면 링크를 클릭하면 자바 스크립트 콘솔에 오류가 표시되지 않지만 AJAX 요청이 트리거됩니다.하지만 서버 측에서 다음에 어떤 일이 발생하는지 전혀 알지 못해 동작이 호출되지 않습니다. 테이블이 다시 렌더링되지 않습니다. 난 액션 리스너
l.addActionListener(...);
추가 또는 링크는 차이가 없습니다
UIParameter par = (UIParameter) context.getApplication().createComponent(UIParameter.COMPONENT_TYPE);
par.setValue(sortName);
par.setAssignToExpression(ULHelper.createValueExpression("#{bean.text}", String.class));
l.getChildren().add(par);
에 파라미터 인스턴스를 추가하면
는 이들의 어느 쪽도 실행된다.
a4j : commandLink가 저장되지 않아 두 번째 요청에서 해당 링크 (따라서 리스너, 매개 변수 등)가 작동하지 않는다고 생각됩니다. 하지만 링크의 상태를 지속 (및 복원)하는 방법을 모릅니다. 도움이 될 수있는 작업 소스에서