我需要使用<style>
将我的css文件包含为内部css 。我怎么能用Wicket做到这一点?
我知道renderHead()
和<wicket:link>
如here所述。但这会产生外部链接。这是用于发送邮件,所以我需要它包含在生成的html中。
答案 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