vraptor4 プロジェクトがありapache velocity
、テンプレート エンジンとして使用したいと考えています。
だから私はbr.com.caelum.vraptor.view.DefaultPathResolver
asを専門にしました
@Specializes
public class VelocityPathResolver extends DefaultPathResolver {
@Inject
protected VelocityPathResolver(FormatResolver resolver) {
super(resolver);
}
protected String getPrefix() {
return "/WEB-INF/vm/";
}
protected String getExtension() {
return "vm";
}
}
それはうまくいきます@Named
が、テンプレートにコンポーネントを含めることができません。
持つ
@SessionScoped
@Named("mycmp")
public class MyComponent implements Serializable {
private static final long serialVersionUID = 1L;
private String name = "My Component";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
${mycmp.name}
ベロシティ テンプレート (.vm) のように参照することはできませんが、.jsp を使用すると問題なく動作します。
それを解決するために、私はbr.com.caelum.vraptor.core.DefaultResult
as を特化しました
@Specializes
public class VelocityResult extends DefaultResult {
private final MyComponent mycmp;
@Inject
public VelocityResult(HttpServletRequest request, Container container, ExceptionMapper exceptions, TypeNameExtractor extractor,
Messages messages, MyComponent mycmp) {
super(request, container, exceptions, extractor, messages);
this.mycmp = mycmp;
}
@PostConstruct
public void init() {
include("mycmp", mycmp);
}
}
@Named
速度テンプレートにコンポーネントを含めるためのより良いアプローチはありますか?