gpt4 book ai didi

java - 无法在我的模板文件中获取资源文件(使用 ReSTLet 和 Freemarker)

转载 作者:行者123 更新时间:2023-11-30 05:54:07 24 4
gpt4 key购买 nike

我正在尝试使用 ReSTLet 开发一个网络应用程序,但在访问我的/public/css/* 和/public/js/* 时遇到了一些问题。

我在控制台中有这样的消息:

INFO: 2012-03-10    23:52:59    127.0.0.1   -   -   8182    GET /public/css/bootstrap-responsive.min.css    -   404 439 0   0   http://localhost:8182   Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Ubuntu/11.10 Chromium/17.0.963.65 Chrome/17.0.963.65 Safari/535.11   http://localhost:8182/hello

我目前只有一个使用 HTML 模板的 HelloWorld :

public class RestletServerTest extends ServerResource {

public static void main(String[] args) throws Exception {
Component component = new Component();
component.getServers().add(Protocol.HTTP, 8182);

component.getDefaultHost().attach("/hello", new HelloWorldApplication());

component.start();
}
}

public class HelloWorldApplication extends Application {
private Configuration configuration;

@Override
public synchronized Restlet createInboundRoot() {
configuration = new Configuration();
try {
configuration.setDirectoryForTemplateLoading(new File("src/main/webapp/WEB-INF/template"));
configuration.setObjectWrapper(new BeansWrapper());
} catch (IOException e) {
e.printStackTrace();
}

Router router = new Router(getContext());

router.attach("", HelloWorldResource.class);

return router;
}

public Configuration getConfiguration() {
return configuration;
}
}

public class HelloWorldResource extends ServerResource {
@Get
public Representation get() {
TemplateRepresentation templateRepresentation = new TemplateRepresentation("hello.ftl", getApplication()
.getConfiguration(), MediaType.TEXT_HTML);
return templateRepresentation;
}
@Override
public HelloWorldApplication getApplication() {
return (HelloWorldApplication) super.getApplication();
}
}

<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
<link rel="stylesheet" href="/public/css/bootstrap-responsive.min.css" />
<link rel="stylesheet" href="/public/css/bootstrap.min.css" />

<script type="text/javascript" src="/public/js/bootstrap.min.js"></script>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>

CSS 和 JS 文件位于“/src/main/webapp/public”文件夹中。我忘了什么?

谢谢。

弗洛里安。

最佳答案

也许您可以尝试使用以下类之一:ClassTemplateLoader 或 WebappTemplateLoader。

例如,您可以如下所述的 ClassTemplateLoader 类:

Configuration configuration = new Configuration();
configuration.setTemplateLoader(
new ClassTemplateLoader(ClassInTheClasspath.class,
"/rootpath/under/classpath/");
configuration.setObjectWrapper(new DefaultObjectWrapper());
(...)

这允许在路径/rootpath/under/classpath/下的类路径中找到您的模板。在此上下文中,第一个/是类路径的根。

希望对你有帮助。蒂埃里

关于java - 无法在我的模板文件中获取资源文件(使用 ReSTLet 和 Freemarker),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9651019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com