gpt4 book ai didi

java - 如何将一个 DropWizard(带有 freemarker) View 嵌入另一个 View ?

转载 作者:行者123 更新时间:2023-11-30 09:15:55 26 4
gpt4 key购买 nike

我正在使用 DropWizard 和 Freemarker 构建一个 View ,该 View 根据网络服务的结果显示不同类型的表单。

我已经将表单创建为 View - 每个都有自己的 ftl。

因此,在我的资源中,我发现了我需要的表单,然后加载 main.ftl,将表单 View 作为参数传递(见下文)。

这行不通。谁能看出我们哪里出错了?或者是否有一种完全不同的方式使用 DropWizard 和 freemarker 将 View 链接在一起?

@GET
public Form getForm() {
FormView view = new FormView(service.getForm());
return new MainView(view);
}

public class FormView extends View {
private final Form form;

public FormView(Form form) {
super("formView.ftl");
this.form = form;
}

public Form getForm() {
return form;
}
}

public class MainView extends View {
private final FormView formView;

public MainView(FormView formView) {
super("main.ftl");
this.formView = formView;
}

public FormView getFormView() {
return formView;
}
}

public class TextForm extends View implements Form {
private int maxLength;
private String text;

public TextForm(int maxLength, String text) {
super("textForm.ftl");
this.maxLength = maxLength;
this.text = text;
}

public int getMaxLength() {
return maxLength;
}

public String getText() {
return text;
}
}

main.ftl
<#-- @ftlvariable formView="" type="MainView" -->
<html>
<body>
<#include formView.templateName /> // This evaluates to formView.ftl, but it seems to create a new instance, and doesn't have the reference to textForm.ftl. How do we reference a dropwizard view here?
</body>
</html>

formView.ftl
<#-- @ftlvariable form type="FormView" -->
${form?html} // also tried #include form.templateName

textForm.ftl
<#-- @ftlvariable text type="TextForm" -->
<div>${text?html}</div>

最佳答案

根据讨论,我认为您需要这样的东西:

<#-- main.ftl -->
<html>
<body>
<#include formView.templateName>
</body>
</html>

formView.templateName 必须评估为 textForm.ftlnumberForm.ftlcomplexForm.ftl 或其他您可能拥有的表单 View 。不需要在这些文件之间进行选择的中间文件。我认为您遇到了问题,因为 FormView.getTemplateName() 正在返回一个硬编码的 formView.ftl。我认为您需要的是此方法返回包含您要显示的表单类型的实际模板文件的名称。

关于java - 如何将一个 DropWizard(带有 freemarker) View 嵌入另一个 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19664760/

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