亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

檢票口 - 從另一個面板設置模型

檢票口 - 從另一個面板設置模型

喵喔喔 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 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號