简体   繁体   中英

Can't render html in Wicket

Let's consider I have a HTML markup:

<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;
}

I use that markup in ModalWindow, and it works pretty good, but when I apply CSS class to <ul> tag I don't see it in the browser, but when I inspect element, it generates in HTML code. I think that it must be because I use it in ModalWindow, and something(script, style) is conflicted. Any ideas?

In order to use Wicket to create HTML emails, we need to fake the request/response cycle. I wrote this convenient method that renders a bookmarkable page (pageclass + pageparameters) to a string: 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 = 

new 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();

}

The problem was solved after I append target.appendJavaScript("launchJS();"); where I had AjaxRequestTarget in my pages.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM