2010-06-16 7 views
3

J'ai un composant de calendrier défini comme richfacesRichFaces valeur saisie manuelle du calendrier ne lie pas

<rich:calendar id="startDate" value="#{myBean.dateSet.startDate}" 
       timeZone="#{myBean.dateSet.timeZone}" 
       datePattern="#{myBean.dateSet.datePattern}" 
       enableManualInput="true" immediate="true"> 
     <a4j:support event="onchanged" action="#{myBean.adjustEndDate}" 
        reRender="startDate,endDate" ajaxSingle="true" /> 
</rich:calendar> 

quand je change la date en utilisant le calendrier pop-up/IUG tout fonctionne bien.

Toutefois, lorsque je la modifie via le champ de texte de saisie, la valeur n'est pas mise à jour dans myBean.dateSet.startDate, bien qu'elle soit mise à jour correctement sur le composant de calendrier lui-même (si je clique sur l'icône du calendrier popup affiche la date actuelle mise à jour).

Des suggestions sur comment je peux l'obtenir pour mettre à jour la valeur à myBean correctement?

Merci!

Répondre

2

Utilisez l'événement oninputchange, c'est-à-dire celui qui suit les modifications manuelles.

1

Je ne sais pas si cela aide, mais si vous voulez obtenir la valeur dans le champ de saisie, vous l'appelez <calId>InputDate. Donc, dans votre cas, le champ de texte de saisie aura l'ID startDateInputDate. J'espère que cela aide en quelque sorte!

1

Vous pouvez utiliser l'événement oninputchange dans le composant rich: calendar comme suggéré par Max Katz.

Par exemple:

<rich:calendar 
    ... 
    oninputchange="invokeCalendarOnChange(event,'#{rich:clientId('$idOfTheCalendar')}')" 
    ... 
</rich:calendar> 

function invokeCalendarOnChange(event, id) { 
    var c = RichFaces.$(id); 
    c.invokeEvent("change", RichFaces.getDomElement(c.id), event, c.selectedDate); 
} 

Hope that helps!

Questions connexes