Я новичок в Wicket. Я добавляю модель в подпанель (ChartPanel
) из главной панели (MainPanel
) по нажатию кнопки.
MainPanel.java
При нажатии кнопки я заново добавляю chartPanel после изменения ее модели. Ниже приведен код, который я использую в кнопке Нажмите MainPanel
. Здесь событие onRenderAnnotations создается при некотором щелчке в пользовательском интерфейсе.
@OnEvent
public void onRenderAnnotations(RenderAnnotationsEvent aEvent)
{
LOG.trace("clicked on the annotation");
renderChart( aEvent.getRequestHandler());
}
private void renderChart(IPartialPageRequestHandler aRequestHandler)
{
MultiValuedMap<String, Double> recommenderScoreMap = getLatestScores(aRequestHandler);
Map<String,String> curveData = new HashMap<String,String>();
LearningCurve learningCurve = new LearningCurve();
for (String recommenderName : recommenderScoreMap.keySet()) {
String data = recommenderScoreMap.get(recommenderName).stream().map(Object::toString)
.collect(Collectors.joining(", "));
curveData.put(recommenderName,data);
learningCurve.setCurveData(curveData);
learningCurve.setMaximumPointsToPlot(MAX_POINTS_TO_PLOT);
}
chartPanel.setDefaultModel(Model.of(learningCurve));
// to avoid the error, A partial update of the page is being rendered
try {
aRequestHandler.add(chartPanel);
}
catch (IllegalStateException e) {
LOG.warn("Not updating the chart. " + e.toString());
setResponsePage(getPage());
}
}
ChartPanel.java
После этого в chartPanel я хочу использовать обновленную модель, чтобы добавить компонент в chartmap. Каков наилучший способ сделать это?
Я хочу сделать что-то подобное в классе ChartPanel:
@Override
protected void onRender()
{
super.onModelChanged();
LearningCurve newLearningCurve = getModel().getObject();
requestTarget = ???
String js = createJavascript(newLearningCurve);
requestTarget.prependJavascript(js);
}
Мой вопрос в приведенном выше коде, как получить цель запроса, поскольку это не ajax-запрос, и я не получаю его в аргументах. Должен ли я использовать какую-то другую функцию, где я также получаю requestTarget. Но я хочу, чтобы он вызывался каждый раз, когда модель ChartPanel
обновляется откуда угодно.
Прошу прощения за мое невежество. Я пытался в течение нескольких дней, но я все еще застрял. Я попытался объяснить это достаточно, но если какая-либо информация отсутствует, пожалуйста, прокомментируйте, и я добавлю это сразу.
Спасибо.