Plusieurs pages peuvent afficher les données et la configuration actuelles et historiques. Nous voulons permettre à l'utilisateur de contrôler la quantité de données historiques affichées. Un paramètre pour cela est dans la session; le paramètre sera ajouté à une page de préférences et à la base de données. Notre méthode préférée pour effectuer un ajustement à la volée consiste à utiliser un contrôle DropDownChoice
sur la page de base.Comment puis-je forcer le rendu d'une page depuis onSelectionChanged?
J'ai créé des classes de modèle et d'entité dans ma classe BasePage pour gérer ces valeurs.
private Integer setting;
private String description;
Le code pour le contrôle DropDownChoice
:
private TermSettingEntity tsetting;
private void buildCommon()
{
// Number of prior terms to show
tsetting = new TermSettingEntity(AlphPlusSession.get().getDateRange(), "dummy");
TermSettingEntity[] toptions = new TermSettingEntity[]
{
new TermSettingEntity(0, "Current Term"),
new TermSettingEntity(1, "One Prior Term"),
new TermSettingEntity(2, "Two Prior Terms"),
new TermSettingEntity(-1, "All Terms")
};
ChoiceRenderer<TermSettingModel> choiceRenderer = new ChoiceRenderer<TermSettingModel>("description", "setting");
DropDownChoice<TermSettingModel> prefselect = new DropDownChoice<TermSettingModel>("termPref",
new PropertyModel<TermSettingModel>(this, "tsetting"), Arrays.asList(toptions), choiceRenderer)
{
private static final long serialVersionUID = 1L;
public boolean isVisible()
{
// Show on the side panel
return allowPreference;
}
protected boolean wantOnSelectionChangedNotifications()
{
return true;
}
protected void onSelectionChanged(final TermSettingModel newSelection)
{
System.out.format("onSelectionChanged(%s)%n", newSelection.getSetting().toString());
AlphPlusSession.get().setDateRange(newSelection.getSetting());
setResponsePage(getPage());
}
};
prefselect.setNullValid(false);
prefselect.setRequired(true);
add(prefselect);
}
je changé une valeur de session onSelectionChanged(..)
. L'appel à setResponsePage(getPage())
provoque la même réponse que de cliquer sur un rafraîchissement de page: les tables sont remplies, avec les mêmes données, mais il n'y a pas d'accès aux données pour obtenir plus ou moins de données.
Existe-t-il une méthode pour forcer l'ensemble de la WebPage
à être réémise, y compris la récupération de données à partir de la base de données?
Veuillez lire [Comment poser une bonne question?] (Http://stackoverflow.com/help/how-to-ask) avant d'essayer de poser d'autres questions. –
Quiconque nuise aux réponses, veuillez laisser des commentaires expliquant pourquoi. –