일부 viewParams는 필수이며 FacesMessage가없는 경우 표시됩니다. 그러나 시스템 이벤트 preRenderView는 빈 검색 매개 변수로 실행되므로 반환되는 기본 데이터 결과가 있습니다. 여하튼 필수 속성을 위반했을 때 preRenderView에 등록 된 메소드가 실행되지 않도록 할 수 있습니까?f의 필수 플래그 : viewParam이 preRenderView를 호출하지 못하도록하지 않습니다.
1
A
답변
3
<f:event type="preRenderView">
는 본질적으로이 구조에 해킹/해결 방법입니다. 그것의 이름은 실제로 입니다.은 유형 요청 (다시 게시 여부)과 유효성 검사 결과 (실패 또는하지 않음)에 관계없이 렌더링 응답 단계 전에 호출됩니다. 세부 사항이 관련 질문에 정교에서 이것은 또한 :
public void init() {
FacesContext facesContext = FacesContext.getCurrentInstance();
if (!facesContext.isPostback() && !facesContext.isValidationFailed()) {
// ...
}
}
는 // ...
대신이 원하는 로직을 넣어 : What can <f:metadata>, <f:viewParam> and <f:viewAction> be used for?이 다음 추가로 도움이 조각이 포함되어 있습니다.
JSF 2.2에서 표준 용액은 <f:viewAction>
의 향미로 제공되며 위의 관련 질문에서도 설명되어 있습니다.
1
가 나는 코드를보고하지 않은,하지만보기에서 아무것도 전에 docspreRenderView
시작부터가 구성된다. 따라서 응용 프로그램은 유효성을 검사 할 뷰 매개 변수를 알지 못합니다.
당신은 아마 이벤트 방법에 필수 인수를 확인하기 위해 필요 또는 사용 JSF-2.2의 당신이 실제로 원하는 것으로 보인다 f:viewAction 새. 추가/이미 Omnifaces를 사용하는 경우
는 <f:viewParam>
의 할당 한 후 실행하여 InvokeActionEventListener, 거기 :
<f:event listener="#{bean.myListener()}" type="postInvokeAction" />