为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

喵喔喔 2022-08-17 10:53:30
我对Wicket很陌生。我正在将模型添加到子面板()从主面板()单击按钮。ChartPanelMainPanelMainPanel.java单击按钮时,我在更改其模型后重新添加图表面板。以下是我在按钮中使用的代码单击.此处,onRenderAnnotations 事件是在 UI 中单击一下时生成的。MainPanel @OnEventpublic 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 中做这样的事情:@Overrideprotected void onRender(){    super.onModelChanged();    LearningCurve newLearningCurve = getModel().getObject();    requestTarget = ???    String js = createJavascript(newLearningCurve);    requestTarget.prependJavascript(js);}我的问题是,在上面的代码中如何获取请求目标,因为它不是ajax请求,我也无法在参数中获取它。我应该使用其他一些函数,其中我也得到一个请求Target。但我希望每次从任何地方更新模型时都调用它。ChartPanel原谅我的无知。我已经尝试了几天,但我仍然卡住了。我试图解释得足够多,但如果缺少任何信息,请发表评论,我会立即添加它。
查看完整描述

1 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

您应该改为覆盖:renderHead()


@Override

public void renderHead(IHeaderResponse response)

{

    super.renderHead(response);


    response.render(OnLoadHeaderItem.forScript(

            createJavascript(newLearningCurve)));

}

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


查看完整回答
反对 回复 2022-08-17
  • 1 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号