【问题标题】:Which is the best Wicket component for rendering arbitrary HTML?哪个是渲染任意 HTML 的最佳 Wicket 组件?
【发布时间】:2011-01-17 11:24:22
【问题描述】:

我正在使用 Apache Wicket 实现一个简单的 markdown wiki。 wiki 通常会根据用户输入的内容呈现任意 HTML。

我对哪个 Wicket 组件最适合呈现这种任意 HTML 感到有些困惑。

我尝试了 Label 组件,但它没有正确呈现列表,MultilineLabel 也没有(它放置了中断而不是常规列表 HTML)。

感谢您的帮助。

更新: Label 组件运行良好。我的错误是我无法让它更早地工作。这是一些糟糕的样式表和深夜编码的结合。感谢您提供有用的答案。正如建议的那样,我还将查看一些所见即所得的编辑器,它们实际上可能比降价更好。视觉检票口似乎特别有前途。

【问题讨论】:

    标签: java list label wicket


    【解决方案1】:

    如果您要渲染的内容不大,或者已经表示为字符串,Label 可以正常工作,只需调用label.setEscapeModelStrings(false); 以确保它按原样打印字符串。

    但是,如果您的 HTML 内容是动态生成的,或者是从 InputStream/Reader 中读取的,并且您不想将其保存在内存中,则可以直接使用 WebComponent,并覆盖方法 onComponentTagBody()。这样,您可以直接写入响应,而不是填充内存缓冲区,将其转换为字符串,然后然后写入响应(如果使用 Label,则会发生这种情况)。

    两种情况的示例代码:

    HomePage.java

    public class HomePage extends WebPage {
    
        public HomePage() {
    
            add(new Label("label", "<ul><li>test</li><li>test</li><li>test</li><li>test</li><li>test</li></ul>")
                .setEscapeModelStrings(false));
    
            add(new WebComponent("html") {
                @Override
                protected void onComponentTagBody(MarkupStream markupStream, ComponentTag openTag) {
                    Response response = getRequestCycle().getResponse();
                    response.write("<ul>");
                    for (int i = 0; i < 5; i++)
                        response.write("<li>test</li>");
                    response.write("</ul>");
                }
            });
        }
    }
    

    主页.html

    <html xmlns:wicket="http://wicket.apache.org">
    <body>
      <h2>Label</h2>
      <div wicket:id="label"></div>
      <h2>WebComponent</h2>
      <div wicket:id="html"></div>
    </body>
    </html>
    

    【讨论】:

      【解决方案2】:

      它是Label,尽管调用Component.setEscapeModelStrings(false) 来渲染模型返回的原始html。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 2017-12-10
      • 2018-03-18
      相关资源
      最近更新 更多