gpt4 book ai didi

java - Wicket - 从另一个面板设置模型

转载 作者:行者123 更新时间:2023-11-30 01:53:37 27 4
gpt4 key购买 nike

我对 Wicket 还很陌生。我通过单击按钮从主面板 (MainPanel) 将模型添加到子面板 (ChartPanel)。

MainPanel.java

单击按钮时,我会在更改图表面板的模型后重新添加图表面板。以下是我在MainPanel 的buttonClick 中使用的代码。这里,onRenderAnnotations 事件是在 UI 中单击时生成的。

 @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 类中做这样的事情:

@Override
protected void onRender()
{
super.onModelChanged();

LearningCurve newLearningCurve = getModel().getObject();

requestTarget = ???

String js = createJavascript(newLearningCurve);
requestTarget.prependJavascript(js);
}

我的问题是,在上面的代码中如何获取请求目标,因为它不是 ajax 请求,我也没有在参数中获取它。我是否应该使用其他一些函数来获取 requestTarget。但我希望每次从任何地方更新 ChartPanel 模型时都调用它。

请原谅我的无知。我已经尝试了几天,但仍然陷入困境。我试图解释得足够多,但如果缺少任何信息,请发表评论,我会立即添加。

谢谢。

最佳答案

您应该重写renderHead():

@Override
public void renderHead(IHeaderResponse response)
{
super.renderHead(response);

response.render(OnLoadHeaderItem.forScript(
createJavascript(newLearningCurve)));
}

这样,无论图表是由于 AjaxRequest 添加还是仅在页面重新呈现时添加,都将正确显示。

关于java - Wicket - 从另一个面板设置模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55200626/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com