I'm still chewing on the problem. But a custom tag lib would seem a possibility. I ended up using a velocity servlet and doing things that way, my aim in trying otherwise was not to have to use velocity as its another bunch of libraries that in theory I shouldn't need.

Ideally i'd have a template directory under WEB-INF where numb-nuts dreamweaver types can edit email templates and i particularly like the expression syntax which is like jsp2. So i was trying to think of a way of using just that.

Velocity would be a really tidy way of doing things if the VelocityEngine class had a getTemplate method that takes in a file rather than just a string. At the moment I've a velocity servlet thats really only there to get around this problem.

But as things are its not that bad i've have just preferred not having to have a velocity servlet running just to find the where abouts of the template.

Using jsp even better as everythings already there, just how to drill to what i need. RequestDispatcher could be an option request the file get its context and then stuff the map in there, but could be tree-barking or/and smoking too much crack.



On 2 Mar 2004, at 12:59, Niall Pemberton wrote:

Mark,

I'd like to know how to do what you're but, unless someone else knows, how
about a different approach:


You could have a "store" tag which gets the body of a tag and stores it
somewhere (in the request or session or in a bean in the request or session)
and then forwards to an email action which then gets the stored content and
sends an email. Something like:


------EmailTemplate.jsp-----
<custom:store name="myForm" property="emailContent" scope="session">
    ------ format your email here -----
</custom:store>
<logic:forward name="emailForward"/>


------- StoreTag.java---------


package lib.framework.taglib;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.JspException;
import org.apache.struts.util.RequestUtils;
import org.apache.commons.beanutils.BeanUtils;
/**
* @author Niall Pemberton
* @version 1.0.0
*/
public class StoreTag extends BodyTagSupport {

protected String name = null;
protected String property = null;
protected String scope = null;

public StoreTag() {
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setProperty(String property) {
this.property = property;
}
public String getProperty() {
return property;
}
public void setScope(String scope) {
this.scope = scope;
}
public String getScope() {
return scope;
}
public int doAfterBody() throws JspException {
org.apache.struts.action.RequestProcessor ccc;
String value = null;
if (bodyContent != null) {
value = bodyContent.getString().trim();
}
if (property == null) {
pageContext.setAttribute(name, value, RequestUtils.getScope(scope));
} else {
// find the bean
Object bean = RequestUtils.lookup(pageContext, name, scope);
if (bean == null)
throw new JspException("Cannot find bean '"+name+"' in scope '"+scope+"'");
try {
BeanUtils.setProperty(bean, property, value);
}
catch (Exception ex) {
throw new JspException("Error setting property '"+property+"' on bean
'"+name+"' in scope '"+scope+"': "+ex);
}
}
return (SKIP_BODY);
}
public void release() {
name = null;
property = null;
scope = null;
}
}




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to