【问题标题】:Can't render html in Wicket无法在 Wicket 中呈现 html
【发布时间】:2014-05-20 16:00:36
【问题描述】:

假设我有一个 HTML 标记:

<div class="pull-right">
    <div class="btn-group">
        <a href="#" class="btn btn-default">
            <i class="ico ico-prev"></i>
        </a>
        <div class="dropdown2 inline">
        <a href="#" class="btn btn-default btn-shorter">
            <strong>1-8</strong>
        </a>
        <ul class="dropdown-menu spec_width">
            <li><a data-ico="1" href="#">10-30</a></li>
            <li><a href="#">30-40</a></li>
            <li><a href="#">40-50</a></li>
            <li><a href="#">50-60</a></li>
        </ul>
    </div>
    <a href="#" class="btn btn-default">
        <i class="ico ico-next"></i>
    </a>
</div>
<span class="page-title">from<strong>45</strong></span>

.dropdown-menu {
    padding: 0;
    margin: 0;
    left: -1px;
    top: 37px;
    font-size: 13px;
    -webkit-box-shadow: 0px 0px 25px 0px rgba(100, 100, 100, 0.5);
    -moz-box-shadow: 0px 0px 25px 0px rgba(100, 100, 100, 0.5);
    box-shadow: 0px 0px 25px 0px rgba(100, 100, 100, 0.5);
    border: 1px solid #d1d4d3;
    -webkit-border-radius: 0;
    -moz-border-radius: 0;
    border-radius: 0;
    background-color: #f9f9f9;
}
.dropdown-menu li > a {
    color: #4d5357;
    padding: 8px 20px;
}
.spec_width {
    width: 72px;
    min-width: 72px;
    left: 50% !important;
    margin-left: -36px;
    max-height: 150px;
    min-height: 30px;
    float: left;
    overflow: hidden;
    display: block !important;
    visibility: hidden;
}
.spec_width li {
    line-height: 29px;
    width: 100%;
    text-align: center;
padding: 4px 0;
}

.spec_width li:hover {
    background: #e1e1e1;
}

.spec_width li a {
    padding: 0px 0;
    background: none !important;
    width: 100%;
    text-align: center;
}

我在 ModalWindow 中使用该标记,它工作得很好,但是当我将 CSS 类应用于 &lt;ul&gt; 标记时,我在浏览器中看不到它,但是当我检查元素时,它会在 HTML 代码中生成。我想一定是因为我在 ModalWindow 中使用它,而某些东西(脚本,样式)是冲突的。有任何想法吗?

【问题讨论】:

  • 您还需要发布此 html sn-p 的 css。第一个猜测:.dropdown-menu 默认被display: none;visiblity: hidden; opacity:0; 隐藏。
  • 如果没有看到 CSS,我们应该如何提供帮助?我们是程序员,不是通灵者!
  • @NicoO 对不起,我现在没有 .css 文件。但是,当我在浏览器中将它作为 .html 文件启动时,该标记效果很好。这就是 Wicket 的 ModalWindow 的问题。
  • @RUJordan,我编辑了我的问题,并添加了 .CSS 代码。

标签: java javascript html css wicket


【解决方案1】:

为了使用 Wicket 创建 HTML 电子邮件,我们需要伪造请求/响应周期。我编写了这个方便的方法,它将可收藏的页面(pageclass + pageparameters)呈现为字符串: http://www.danwalmsley.com/render_a_wicket_page_to_a_string_for_html_email

protected String renderPage(Class extends Page> pageClass, PageParameters pageParameters) {

  //get the servlet context       WebApplication application =

(WebApplication) WebApplication.get();

  ServletContext context = application.getServletContext();

  //fake a request/response cycle         MockHttpSession servletSession =

新的 MockHttpSession(context); servletSession.setTemporary(true);

  MockHttpServletRequest servletRequest = new MockHttpServletRequest(
          application, servletSession, context);      MockHttpServletResponse servletResponse = new MockHttpServletResponse(
          servletRequest);

  //initialize request and response       servletRequest.initialize();
  servletResponse.initialize();

  WebRequest webRequest = new WebRequest(servletRequest);

  BufferedWebResponse webResponse = new

BufferedWebResponse(servletResponse); webResponse.setAjax(true);

  WebRequestCycle requestCycle = new WebRequestCycle(
          application, webRequest, webResponse);

  requestCycle.setRequestTarget(new

BookmarkablePageRequestTarget(pageClass, pageParameters));

  try {           requestCycle.request();

      log.warn("Response after request: "+webResponse.toString());

      if (requestCycle.wasHandled() == false) {
          requestCycle.setRequestTarget(new WebErrorCodeResponseTarget(
                  HttpServletResponse.SC_NOT_FOUND));             }           requestCycle.detach();

  } finally {             requestCycle.getResponse().close();         }       return

webResponse.toString();

}

【讨论】:

    【解决方案2】:

    在我在我的页面中有AjaxRequestTarget 的地方附加target.appendJavaScript("launchJS();"); 后,问题就解决了。

    【讨论】:

      猜你喜欢
      • 2020-02-29
      • 2019-03-05
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-25
      • 2020-01-26
      • 2012-08-23
      相关资源
      最近更新 更多