Struts 2杂谈(1):ValueStack对象的传送带机制 - 编程入门网
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-06-16
tion类中定义名为name的属性的,name属性的值会与key值相同。
Struts 2杂谈(1):ValueStack对象的传送带机制(2)时间:2011-06-27 BlogJava nokiaguy5. 上面所有的规则可以同时使用。 拦截器的源代码: package interceptors; import java.util.Enumeration; import java.util.Map; import java.util.Properties; import java.io.InputStream; import java.io.FileInputStream; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.config.entities.ActionConfig; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.opensymphony.xwork2.util.ValueStack; public class PropertyInterceptor extends AbstractInterceptor { private static final String DEFAULT_PATH_KEY = "path"; private static final String DEFAULT_ENCODING_KEY = "encoding"; private static final String DEFAULT_SEPARATOR_KEY = "separator"; protected String pathKey = DEFAULT_PATH_KEY; protected String encodingKey = DEFAULT_ENCODING_KEY; protected String separatorKey = DEFAULT_SEPARATOR_KEY; public void setPathKey(String pathKey) { this.pathKey = pathKey; } public void setEncodingKey(String encodingKey) { this.encodingKey = encodingKey; } public void setSeparatorKey(String separatorKey) { this.separatorKey = separatorKey; } @Override public String intercept(ActionInvocation invocation) throws Exception { ActionConfig config = invocation.getProxy().getConfig(); Map<String, String> parameters = config.getParams(); if (parameters.containsKey(pathKey)) { String path = parameters.get(pathKey); String encoding = parameters.get(encodingKey); String separator = parameters.get(separatorKey); if (encoding == null) encoding = "UTF-8"; if (separator == null) separator = ""; path = invocation.getAction().getClass().getResource(path) .getPath(); Properties properties = new Properties(); InputStream is = new FileInputStream(path); java.io.Reader reader = new java.io.InputStreamReader(is, encoding); properties.load(reader); ActionContext ac = invocation.getInvocationContext(); ValueStack stack = ac.getValueStack(); System.out.println(stack.hashCode()); Enumeration names = properties.propertyNames(); while (names.hasMoreElements()) { // 下面会使用setValue方法修改ValueStack对象中的相应属性值 String name = names.nextElement().toString(); if (!name.contains(".")) stack.setValue(name, properties.get(name)); String newName = null; newName = parameters.get(name.replaceAll("\\.", "")); |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于Struts 2杂谈(1):ValueStack对象的传送带机制 - 编程入门网的所有评论