0

pimefaces カレンダー コンポーネントを使用しているフォームがあります。ユーザーがこのコンポーネントを使用して生年月日を選択すると、現在の年齢を計算し、テキスト ボックスに入力する必要があります。ユーザーが生年月日を選択すると、年齢テキストボックスが自動的に表示されます。

<h:outputLabel for="dobirth" value="Date of Birth (mu)" />
                <p:calendar value="#{patient.dob}" id="popupCal">
<p:ajax event="dateSelect" listener="#{patient.handleDateSelect}" />
                </p:calendar>

この方法で年齢を計算しようとしています。

public void handleDateSelect(DateSelectEvent event) throws ParseException {

        System.out.println("inside get age");
        FacesContext facesContext = FacesContext.getCurrentInstance();
        SimpleDateFormat format = new SimpleDateFormat("d/M/yyyy");
        facesContext.addMessage(null,
                new FacesMessage(FacesMessage.SEVERITY_INFO, "Date Selected",
                        format.format(event.getDate())));
        String dd=null;
        dd=format.format(event.getDate());
        System.out.println("date dd"+dd);
        Date date = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH).parse(dd);
        System.out.println("date+++++++++"+date);
        Calendar birth = new GregorianCalendar();
        Calendar today = new GregorianCalendar();
        int calculatedAge = 0;
        int factor = 0;

        Date currentDate = new Date(); // current date
        System.out.println("DOB" + dob);
        birth.setTime(date);
        System.out.println("set birth" + birth);
        today.setTime(currentDate);

        if (today.get(Calendar.DAY_OF_YEAR) < birth.get(Calendar.DAY_OF_YEAR)) {
            factor = -1;

        }
        calculatedAge = today.get(Calendar.YEAR) - birth.get(Calendar.YEAR)
                + factor;
        System.out.println("age is " + calculatedAge);
    }

また、ユーザーがカレンダーを使用して自分の出生を選択するとすぐに年齢を表示する必要もあります。

年齢を取得したら、どうすればjsf 2.0で表示できますか?

4

1 に答える 1

3

calculatedAgeこのようなもの(プロパティにゲッターを追加)。

<h:form>
    <h:outputLabel for="dobirth" value="Date of Birth (mu)" />
    <p:calendar value="#{patient.dob}" id="popupCal">
        <p:ajax event="dateSelect" listener="#{patient.handleDateSelect}"      
               update="age" />
        </p:calendar>
    <h:outputText id="age" value="#{patient.calculatedAge}"/>
</h:form>
于 2012-05-12T11:37:31.123 に答える