programing

JSF backing bean 메서드에서 JSF 컴포넌트를 갱신할 수 있습니까?

itsource 2022. 10. 14. 21:54
반응형

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);

레퍼런스:

연구할 시간이 충분해야 모든 것이 가능합니다. :)

사용자가 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

반응형