2009年6月13日

Apache Commons EL

Apache Commons EL
直接使用 JSTL Expression Language

import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.el.ExpressionEvaluator;
import javax.servlet.jsp.el.VariableResolver;

import org.apache.commons.el.ExpressionEvaluatorImpl;
import org.apache.commons.el.VariableResolverImpl;

public class Main {
public static void main(String[] args) throws Exception {

PageContext pc = new PageContext() {
Map map = new HashMap();
VariableResolver pResolver = new VariableResolverImpl(this);

public void forward(String arg0) throws ServletException,
IOException {
}

public Exception getException() {
return null;
}

public Object getPage() {
return null;
}

public ServletRequest getRequest() {
return null;
}

public ServletResponse getResponse() {
return null;
}

public ServletConfig getServletConfig() {
return null;
}

public ServletContext getServletContext() {
return null;
}

public HttpSession getSession() {
return null;
}

public void handlePageException(Exception arg0)
throws ServletException, IOException {

}

public void handlePageException(Throwable arg0)
throws ServletException, IOException {

}

public void include(String arg0) throws ServletException,
IOException {

}

public void include(String arg0, boolean arg1)
throws ServletException, IOException {

}

public void initialize(Servlet arg0, ServletRequest arg1,
ServletResponse arg2, String arg3, boolean arg4, int arg5,
boolean arg6) throws IOException, IllegalStateException,
IllegalArgumentException {

}

public void release() {

}

public Object findAttribute(String key) {
return map.get(key);
}

public Object getAttribute(String key) {
return map.get(key);
}

public Object getAttribute(String key, int arg1) {
return map.get(key);
}

public Enumeration getAttributeNamesInScope(int arg0) {
return java.util.Collections.enumeration(map.keySet());
}

public int getAttributesScope(String arg0) {
return 0;
}

public ExpressionEvaluator getExpressionEvaluator() {
return null;
}

public JspWriter getOut() {
return null;
}

public VariableResolver getVariableResolver() {
return pResolver;
}

public void removeAttribute(String key) {
map.remove(key);
}

public void removeAttribute(String key, int arg1) {
map.remove(key);
}

public void setAttribute(String key, Object value) {
map.put(key, value);
}

public void setAttribute(String key, Object value, int arg2) {
map.put(key, value);
}

};

pc.setAttribute("v", "World");
pc.setAttribute("x", "2");
pc.setAttribute("sysProp", System.getProperties());
pc.setAttribute("x.y", "requestScope x.y value");

StringBuilder sb = new StringBuilder();
sb.append("Hello ${v}!\n");
sb.append("5 - ${x} = ${5-x}\n");
sb.append("ava.version = ${sysProp['java.version']}\n");
sb.append("${requestScope['x.y']}\n");

ExpressionEvaluator ee = new ExpressionEvaluatorImpl();

Object s = ee.evaluate(sb.toString(), String.class, pc
.getVariableResolver(), null);

System.out.println(s);
}
}
/*
Hello World!
5 - 2 = 3
ava.version = 1.6.0_13
requestScope x.y value
*/

沒有留言:

網誌存檔