1. register in struts.xml
2. Extends FreeMarkerManager
public class FreeMarkerManager extends FreemarkerManager {
protected TemplateLoader getTemplateLoader(ServletContext servletContext) {
FormTemplateLoader templateLoader = new FormTemplateLoader();
return new MultiTemplateLoader(new TemplateLoader[]{
templateLoader,
new WebappTemplateLoader(servletContext),
new StrutsClassTemplateLoader()
});
}
}
3. Implement TemplateLoader
public class FormTemplateLoader implements TemplateLoader {
public Object findTemplateSource(String name) {
// getTemplates() returns map containing template list with template name as key
source = (String) getTemplates().get(name);
lastModified = System.currentTimeMillis();
return source;
}
...
}
Showing posts with label struts2. Show all posts
Showing posts with label struts2. Show all posts
9/03/2008
struts2, freemarker: load template from memory
struts 2: integrate groovy batch
// Using groovy to find out next page by evaluating rule defined in form schema.
Binding binding = new Binding();
binding.setVariable("page", page);
GroovyShell shell = new GroovyShell(binding);
String result = (String) shell.evaluate(page.getFlowRule());
struts 2: integrate ValangValidator
public void validate() {
ValangValidator validator = new ValangValidator();
Page page = getPage();
if (page != null) {
int index = 0;
// Currently, this only provides field level validation.
// TODO: add page/form level validation.
for (index = 0; index < page.getFields().size(); index++) {
Field field = (Field) page.getFields().get(index);
if (field.getValidateRule() != null) {
try {
// Use springmodules ValangValidator to validate field.
Errors errors = new BindException(field, "field");
String validateStr = field.getValidateRule();
validator.setValang(validateStr);
validator.afterPropertiesSet();
validator.validate(field, errors);
if (errors.getErrorCount() > 0) {
addFieldError("page.fields["+index+"].value",
errors.getFieldError().getDefaultMessage());
}
}
catch(Exception e) {
LOG.error(e);
addActionError("Validation has failed: "+e.getMessage());
}
}
}
}
}
Subscribe to:
Posts (Atom)