快速业务通道

Struts 2杂谈(1):ValueStack对象的传送带机制 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
tion类中定义名为name的属性的,name属性的值会与key值相同。

Struts 2杂谈(1):ValueStack对象的传送带机制(2)

时间:2011-06-27 BlogJava nokiaguy

5. 上面所有的规则可以同时使用。

拦截器的源代码:

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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号