JSF backing bean 메서드에서 JSF 컴포넌트를 갱신할 수 있습니까?
JSF Backuping bean을 사용하여 페이지의 컴포넌트를 업데이트 할 수 있는 방법이 있습니까?페이지의 컴포넌트를 업데이트하기 위해 update Attribute와 함께 ajax 컴포넌트를 사용할 생각은 없습니다.JSF backing bean 메서드 내에서 업데이트를 트리거해야 합니다.이 방법이 완료된 후 또는 완료되기 전에 페이지의 업데이트가 이루어질 수 있습니다.Prime Faces를 사용하여 얻을 수 있는 솔루션이 있다면 Prime Faces를 사용하고 있습니다.
표준 JSF API를 사용하여 클라이언트 ID를 에 추가합니다.
FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add("foo:bar");
PrimeFaces 고유의 API를 사용하여 를 사용합니다.
PrimeFaces.current().ajax().update("foo:bar");
또는 아직 PrimeFaces 6.2+를 사용하지 않은 경우 를 사용하십시오.
RequestContext.getCurrentInstance().update("foo:bar");
JSF 유틸리티 라이브러리의 OmniFaces 를 사용하고 있는 경우는, 을 사용해 주세요.
Ajax.update("foo:bar");
방법에 관계없이 이들 클라이언트 ID는 prefix가 부가되지 않은 절대 클라이언트 ID를 나타내야 합니다.NamingContainer
이치노
jsf backing bean/class에서 컴포넌트 업데이트도 시도했습니다.
UI 구성 요소를 조작한 후 다음을 수행해야 합니다.
FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add(componentToBeRerendered.getClientId())
(서버측) componentId 대신 clientId를 사용하는 것이 중요합니다.
는 Primefaces 6.2에서 권장되지 않습니다.이 버전부터는 다음을 사용합니다.
if (componentID != null && PrimeFaces.current().isAjaxRequest()) {
PrimeFaces.current().ajax().update(componentID);
}
또한 backbean에서 javascript를 실행하려면 다음과 같이 하십시오.
PrimeFaces.current().executeScript(jsCommand);
레퍼런스:
- https://github.com/primefaces/primefaces/wiki/Migration-Guide
- https://forum.primefaces.org/viewtopic.php?t=53129
연구할 시간이 충분해야 모든 것이 가능합니다. :)
사용자가 ui:로 반복하여 이름 및 기타 필드를 입력에 표시하도록 하는 것입니다.그러나 필드 중 하나는 singleSelect - A이며, 이에 따라 다른 입력을 업데이트합니다.B . even ui : repeat 에는 내가 입력한 ID가 없으며 DOM 트리에 표시됩니다.
<ui:repeat id="peopleRepeat"
value="#{myBean.people}"
var="person" varStatus="status">
html 내의 ID는 다음과 같습니다.
myForm:peopleRepeat:0:personType
myForm:peopleRepeat:1:personType
보기보다 다음과 같은 방법이 하나 더 있습니다.
<p:ajax event="change"
listener="#{myBean.onPersonTypeChange(person, status.index)}"/>
그 실장은 다음과 같이 간단했습니다.
String componentId = "myForm:peopleRepeat" + idx + "personType";
PrimeFaces.current().ajax().update(componentId);
이렇게 해서 문제없이 콩의 원소를 업데이트했습니다.PF 버전 6.2
행운을 빌고 행복한 코딩 :)
백킹빈에서 성분을 업데이트하기 위해 다음과 같이 할 수 있습니다.RequestContext.getCurrentInstance().update('updatePanelGroup');
<h:panelGroup id="updatePanelGroup">
.....
....
</h:panelGroup>
컴포넌트 업데이트는 프라이머 페이스 버전에 따라 다릅니다.
언급URL : https://stackoverflow.com/questions/11365094/can-i-update-a-jsf-component-from-a-jsf-backing-bean-method
'programing' 카테고리의 다른 글
파일 출력이 있는 디렉토리 자동 생성 (0) | 2022.10.14 |
---|---|
컨텐츠 스크립트를 사용하여 페이지 컨텍스트 변수 및 함수에 액세스합니다. (0) | 2022.10.14 |
$_REQUEST, $_GET, $_POST 중 어느 것이 가장 빠릅니까? (0) | 2022.10.14 |
object==module 또는 null==object? (0) | 2022.10.14 |
오류 1452 MySQL 및 NodeJS.왜 데이터베이스가 내 테이블을 제대로 참조할 수 없는 거죠? (0) | 2022.10.14 |