Mehrere Seiten können aktuelle und historische Daten/Konfigurationen anzeigen. Wir möchten, dass der Benutzer die Menge der angezeigten historischen Daten steuern kann. Eine Einstellung dafür ist in der Sitzung; Die Einstellung wird einer Einstellungsseite und der Datenbank hinzugefügt. Unsere bevorzugte Methode zur Durchführung einer On-the-Fly-Anpassung ist die Verwendung eines DropDownChoice
-Steuerelements auf der Basisseite.Wie kann ich erzwingen, dass eine Seite innerhalb von onSelectionChanged erneut gerendert wird?
Ich erstellte Modell- und Entitätsklassen innerhalb meiner BasePage-Klasse, um diese Werte zu verarbeiten.
private Integer setting;
private String description;
Der Code für die DropDownChoice
Steuerung:
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);
}
ich einen Sitzungswert in onSelectionChanged(..)
geändert. Der Aufruf an setResponsePage(getPage())
verursacht die gleiche Antwort wie das Klicken auf eine Seitenaktualisierung: Die Tabellen werden mit den gleichen Daten neu ausgefüllt, aber es gibt keinen Datenzugriff, um mehr oder weniger Daten zu erhalten.
Gibt es eine Methode, um die gesamte WebPage
neu zu erzwingen, einschließlich des erneuten Abrufs von Daten aus der Datenbank?
Bitte lesen Sie [Wie stelle ich eine gute Frage?] (Http://stackoverflow.com/help/how-to-ask), bevor Sie versuchen, weitere Fragen zu stellen. –
Wer die Antworten ablehnt, hinterlasse bitte Kommentare, warum. –