如何将内部css(<style>)添加到Wicket页面</style>

时间:2012-10-05 10:49:36

标签: java wicket

我需要使用<style>将我的css文件包含为内部css 。我怎么能用Wicket做到这一点?

我知道renderHead()<wicket:link>here所述。但这会产生外部链接。这是用于发送邮件,所以我需要它包含在生成的html中。

3 个答案:

答案 0 :(得分:1)

不试这个......

使用类似于this的renderHead方法实现IHeaderContributor的Panel是不是可以做到这一点?

void renderHead(IHeaderResponse response) {
    StringBuffer myCSS = new StringBuffer();
    File file = new File("global CSS");
    BufferedReader reader = new BufferedReader(new FileReader(file));
    String s = null;
    while ((s = reader.readLine()) != null) {
        myCSS.append(s).append(System.getProperty("line.separator"));
    }
    reader.close();

    response.renderCSS(myCSS, "notreallyneeded");
}

在此过程中省略每个错误处理和适当的资源关闭......

请注意,在非Ajax环境(如电子邮件)中并不需要“notreallyneeded”。根据JavaDoc,这也可以是null

答案 1 :(得分:1)

以下是我最终实现它的方式。感谢Nicktar指向了正确的方向。

@Override
public void renderHead(IHeaderResponse response) {

    try {
        InputStream in = new CssPackageResource(BusinessMail.class, 
                "style.css", getLocale(), "?", "?")
                .getCacheableResourceStream().getInputStream();

        String data = new java.util.Scanner(in).useDelimiter("\\A").next();
        response.renderCSS(data, "notneeded");

    } catch (ResourceStreamNotFoundException e) {
        logger.error("Could not load css", e);
    }           
}

答案 2 :(得分:0)

如果我理解&#34;内部&#34;,请使用wicket html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:wicket="http://wicket.apache.org/" xml:lang="en" lang="en">
<wicket:head>

    <style type="text/css">
<!--
.aCaption {
/*  display: block; */
/*  background-color: green;*/

}
-->

</style>

</wicket:head>

  // rest of classic wicket page ...   
  <body> .... etc