有谁知道FMPP文本文件预处理器的 Python 等价物?
跟进:我正在阅读文档并查看给出建议的示例。只是为了扩展。我对 FMPP 的使用是读入数据文件 (csv) 并根据该数据使用多个模板以在 html 中创建所有链接到主索引的多页报告。
我对Freemarker和Restlet的freemarker扩展文档中的内容感到有点困惑.
情况就是这样:restlet引擎提供资源的HTML表示(例如www.mysite.com/{user}/updates).为此URI返回的资源是一个HTML页面,其中包含使用freemarker模板创建的所有更新.此应用程序托管在Glassfish v3服务器上
问题(S):
freemarker配置只应按照freemarker文档加载一次:
/* You should do this ONLY ONCE in the whole application life-cycle:Create and adjust the configuration */
Configuration cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(
new File("/where/you/store/templates"));
cfg.setObjectWrapper(new DefaultObjectWrapper());
Run Code Online (Sandbox Code Playgroud)
在Java EE应用程序中执行此操作的最佳位置是什么?我想在web.xml中使用它作为context-param并使用ServletContextListener - 但我不知道如何去做.
根据freemarker的文档,我们还可以添加freemarkerservlet并映射.ftl url-patterns.但是这已经由Restlet servlet映射(即,"/ " 的url模式).所以为*.ftl另外一个没有意义(或者是吗?)
所以问题基本上是关于如何最好地与Freemarker的"配置"集成,以便它只发生一次,这段代码的"入口点"是什么(谁称之为).有没有人在Java EE环境中成功使用Freemarker + restlet?有任何想法吗?
谢谢!
我正在开发一个使用Struts 1.1的web应用程序和使用jsps的tile.我想介绍一些freemarker模板.
我知道Struts 2可以实现这一点,但是你可以在Struts 1中使用freemarker吗?
我正在使用 spring 和 freemarker 并且有基本的工作。
我有一个类似的属性文件
help.text=For further information please see the <a href="{0}">help page</a>.
Run Code Online (Sandbox Code Playgroud)
我目前正在使用
${rc.getMessage("help.text")}
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚如何传入我的替换变量。你能帮我吗?
干杯,彼得
我试图阅读FreemarkerView渲染的结果:
View view = viewResolver.resolveViewName(viewName, locale);
view.render(model, request, mockResponse);
Run Code Online (Sandbox Code Playgroud)
要读取结果,我创建了mockResponse,它封装了HttpServletResponse:
public class HttpServletResponseEx extends HttpServletResponseWrapper {
ServletOutputStream outputStream;
public HttpServletResponseEx(HttpServletResponse response) throws IOException {
super(response);
outputStream = new ServletOutputStreamEx();
}
@Override
public ServletOutputStream getOutputStream() {
return outputStream;
}
@Override
public PrintWriter getWriter() throws IOException {
return new PrintWriter(new OutputStreamWriter(outputStream, "UTF-8"));
}
}
Run Code Online (Sandbox Code Playgroud)
还有我的ServletOutputStream,它使用StringBuilder构建String:
public class ServletOutputStreamEx extends ServletOutputStream {
StringBuilder stringBuilder;
public ServletOutputStreamEx() {
this.stringBuilder = new StringBuilder();
}
@Override
public void write(int b) throws IOException {
} …Run Code Online (Sandbox Code Playgroud) 我有一个简单的类:
public class MyClass {
public final static long MAIN = 1;
@Setter @Getter
protected int id;
}
Run Code Online (Sandbox Code Playgroud)
(@Setter @Getter是lombokSetter 和 Getter 方法的注释。)
在 Freemarker 模板中,我想创建一个条件,如:
<#if myClassInstance.id == myClassInstance.MAIN>
Run Code Online (Sandbox Code Playgroud)
但是if表达式的右侧是根据 FreeMarker 未定义的。有没有办法做到这一点?谢谢!
根据文档,您应该能够将 javabean 传递给 FreeMarker 模板,并且它将能够访问 bean 的 getter。我一直在尝试这样做,但没有任何运气。这是我将 bean 传递给模板的代码。
public class Hello extends HttpServlet {
public static final Logger LOGGER = Logger.getLogger(Hello.class.getName());
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try {
Configuration cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(new File(this.getServletContext().getRealPath("/templates")));
cfg.setObjectWrapper(new DefaultObjectWrapper());
cfg.setDefaultEncoding("UTF-8");
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.HTML_DEBUG_HANDLER);
cfg.setIncompatibleImprovements(new Version(2, 3, 20)); // FreeMarker 2.3.20
final String name = req.getParameter("name");
// This works when model is a Map, but not when it is a bean
Model model = new Model();
model.setUsername(name); …Run Code Online (Sandbox Code Playgroud) 我正在学习Freemarker框架,我有这个问题.我可以将自定义对象传递给模板文件吗?我看到这些帖子说他们做了我说的话,但它不适合我.
http://freemarker.org/docs/pgui_datamodel_objectWrapper.html
我知道春天可以帮助我,但我想尝试没有它.
我的代码是这样的:
Servlet的:
public class servletTest extends HttpServlet {
/**
* @see Servlet#init(ServletConfig)
*/
public void init(ServletConfig servConfig) throws ServletException {
// TODO Auto-generated method stub
try {
cfg = config.getConfig();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* Questa chiamata permette di chiamare il file di configurazione per il
* template
*/
private Configuration cfg;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter(); …Run Code Online (Sandbox Code Playgroud) 因此,我们将html输入输出数据模型。我需要将其输出到freemarker模板中:
例:
[#assign value = model.value!]
${value}
value = '<p>This is <a href='somelink'>Some link</a></p>'
Run Code Online (Sandbox Code Playgroud)
我已经尝试过[#noescape],但是它抛出一个错误,说没有转义块。请参见FREEMARKER:避免转义HTML字符。此解决方案对我不起作用。
Springframework能够与freemarker模板引擎集成.Spring提供了一个带有核心宏的spring.ftl,以及简化表单支持的功能.调用为您构建表单域的宏以及解析值选择(即使对于singleSelects或multiSelects).
执行神话的基本组件是它们的绑定宏,它调用一些神秘的springMacroRequestContext来获取绑定状态信息.
这个变量来自何处以及它背后隐藏着什么?
freemarker ×10
java ×4
spring ×3
java-ee ×2
templates ×2
concurrency ×1
fmpp ×1
javabeans ×1
localization ×1
macros ×1
preprocessor ×1
python ×1
restlet ×1
restlet-2.0 ×1
servlets ×1
spring-mvc ×1
struts-1 ×1
tomcat ×1