检票口 - 从另一个面板设置模型

我对Wicket很陌生。我正在将模型添加到子面板()从主面板()单击按钮。ChartPanelMainPanel


MainPanel.java


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


 @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请求,我也无法在参数中获取它。我应该使用其他一些函数,其中我也得到一个请求Target。但我希望每次从任何地方更新模型时都调用它。ChartPanel


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


喵喔喔
浏览 117回答 1
1回答

拉风的咖菲猫

您应该改为覆盖:renderHead()@Overridepublic void renderHead(IHeaderResponse response){&nbsp; &nbsp; super.renderHead(response);&nbsp; &nbsp; response.render(OnLoadHeaderItem.forScript(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; createJavascript(newLearningCurve)));}这样,您的图表将正确显示,无论它是由于AjaxRequest添加的,还是仅在重新呈现页面时添加的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java