값 변경 수신기가 프라임페이스 일정관리에서 작동하지 않습니다.
저는 프라임페이스 3.2와 JSF 2.0을 사용하고 있습니다.
제 시나리오는 제 양식에 파일 날짜, 마지막 날짜, 그리고 다음 날짜가 있는 것입니다.사용자가 파일 날짜를 입력하면 해당 값을 속성 mindate의 마지막 날짜에 최소 날짜로 사용할 수 있도록 bean에 파일 날짜 값을 업데이트해야 합니다.
내가 아는 바로는 가치변경 청취자는 양식 제출 시 실행할 수 있으므로 사용할 수 없습니다.p:ajax를 사용한 적이 있습니다.하지만 아직도 파일 날짜를 잡을 수가 없습니다.파일 날짜가 설정되지 않아 파일 날짜 이전의 마지막 날짜와 다음 날짜를 선택할 수 있습니다.
caseMaster.xhtml
<p:calendar value="#{caseUitility.caseMaster.fileDate}" id="fileDate" effect="fadeIn" pattern="dd/MM/yyyy" readOnlyInputText="true">
<p:ajax event="change" listener="#{caseUitility.dateChange}"/>
</p:calendar>
<p:calendar value="#{caseUitility.caseMaster.lastDate}" required="true" id="lastDate" effect="fadeIn" pattern="dd/MM/yyyy" readOnlyInputText="true" mindate="#{caseUitility.caseMaster.fileDate}" >
</p:calendar>
CaseUtility.java
public void dateChange(ActionEvent ae) {
System.out.println("File Date: " + caseMaster.getFileDate());
System.out.println("Hello... I am in DateChange");
}
내가 여기서 무엇을 잘못하고 있는지 안내해 줄 수 있습니까?
PrimeFaces의 최신 버전에서는 다음 코드 스니펫을 참조하십시오.
<p:calendar id="event" value="#{calendarView.date4}">
<p:ajax event="dateSelect" listener="#{calendarView.onDateSelect}" update="msgs" />
</p:calendar>
public void onDateSelect(SelectEvent event) {
FacesContext facesContext = FacesContext.getCurrentInstance();
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Date Selected", format.format(event.getObject())));
}
이전 프라임페이스 버전에서는 다음을 사용합니다.
<p:ajax event="dateSelect" listener="#{caseUitility.dateChange}"/>
public void dateChange(DateSelectEvent event) {
Date date = event.getDate();
System.out.println("File Date: " + date);
System.out.println("Hello... I am in DateChange");
}
p:ajax에 업데이트를 추가해야 합니다.날짜 선택기로 날짜를 선택할 때와 필드에 수동으로 입력할 때 문제가 있었습니다.변경 이벤트가 양방향으로 트리거되지 않았습니다.그래서 이벤트가 다른 p:ajax와 f:ajax를 사용했습니다.
<p:calendar value="#{caseUitility.caseMaster.fileDate}" id="fileDate" effect="fadeIn" pattern="dd/MM/yyyy" readOnlyInputText="true">
<p:ajax event="dateSelect" listener="#{caseUitility.dateSelect}" update="lastDate"/>
<f:ajax event="change" execute="@this" render="lastDate" listener="#{caseUitility.dateChange}"/>
</p:calendar>
그리고 빈속에서
public void dateSelect(DateSelectEvent event) {
caseMaster.setFileDate(event.getDate());
System.out.println("File Date: " + caseMaster.getFileDate());
System.out.println("Hello... I am in DateChange");
}
public void dateChange(AjaxBehaviorEvent event) throws MWSException {
System.out.println("File Date: " + caseMaster.getFileDate());
System.out.println("Hello... I am in DateChange");
}
도움이 되길 바랍니다.
내 솔루션:
<p:ajax event="change" listener="#{caseUitility.dateChange}"/>
그리고 빈속에서:
public void dateChange(SelectEvent event)
{
date = (Date)event.getObject();
}
이 일을 생각해 보셔야 할 것 같습니다.
<p:calendar id="fileDate" value="#{caseUitility.caseMaster.fileDate}" navigator="true" effect="slideDown" mindate="#{caseUitility.today}" readOnlyInputText="true" pattern="dd/MM/yyyy HH:mm" required="true" showOn="button" autocomplete="false">
<p:ajax event="focus" listener="#{caseUitility.dateChange}" update="lastDate" />
</p:calendar>
public void dateChange() {
System.out.println("File Date: " + caseMaster.getFileDate());
}
포커스 이벤트를 사용하는 경우 변경 또는 날짜 변경 시 트리거됩니다. 캘린더 프라임페이스 제어에 대해 선택합니다.
ax 이벤트를 date로 사용좋아요를 선택합니다.
<p:calendar value="#{caseUitility.caseMaster.fileDate}" id="fileDate" effect="fadeIn" pattern="dd/MM/yyyy" readOnlyInputText="true">
<p:ajax event="dateSelect" process="@this" update="lastDate" listener="#{caseUitility.dateChange}"/>
</p:calendar>
<p:calendar value="#{caseUitility.caseMaster.lastDate}" required="true" id="lastDate" effect="fadeIn" pattern="dd/MM/yyyy" readOnlyInputText="true" mindate="#{caseUitility.caseMaster.fileDate}" >
</p:calendar>
청취자 여러분.
public void dateChange(SelectEvent event) {
System.out.println("File Date: " + (Date) event.getObject());
System.out.println("Hello... I am in DateChange");
}
그러나 프로세스 중에 다른 구성 요소 ID를 사용해서는 안 됩니다(프로세스 중에 means만 @this 허용됨). 그렇지 않으면 수신기가 작동하지 않습니다.
사용가능onstart
그리고.oncomplete
(primefaces doc에는 나타나지 않음).
그 문제를 해결했습니다.
<p:calendar
id="fromDate"
value="#{reportBean.fromDate}"
pattern="dd/MM/yyyy"
locale="es"
maxdate="#{reportBean.untilDate}">
<p:ajax event="dateSelect"
onstart="openModal();"
oncomplete="closeModal();"
update="untilDate div_report"/>
</p:calendar>
자바스크립트:
function openModal(){
$('#mdlLoading').modal('open');
}
function closeModal(){
$('#mdlLoading').modal('close');
}
누군가에게 도움이 되길 바랍니다!
언급URL : https://stackoverflow.com/questions/14099478/value-change-listener-not-working-in-primefaces-calendar
'programing' 카테고리의 다른 글
트랙터, isDisplayed() NoSuchElementError:로케이터를 사용하는 요소를 찾을 수 없습니다. (0) | 2023.10.02 |
---|---|
우커머스 | 워드프레스 - WC_Cart ::set_quantity - (0) | 2023.10.02 |
3디브마다 디브로 포장합니다. (0) | 2023.10.02 |
워드프레스 - 게시물 카테고리를 추가하려면 페이지 새로 고침이 필요합니다. (0) | 2023.10.02 |
특정 테이블 이름을 사용하는 Oracle 보기 목록 (0) | 2023.10.02 |