使用从一个类到另一个类的变量

时间:2012-09-03 01:57:44

标签: java java-ee web-applications velocity

我有一个使用velocity的java应用程序。我通过url使用ureq.getParameter()方法提取第一页中的两个变量。其中一个具有速度容器的类,我需要将一个变量从url发送到此velocity容器。我尝试在第二个类中创建第一个类的实例,并使用getVariable name方法来执行此操作,但它不起作用。有人能告诉我怎么做吗?

第1课:

package org.olat.dispatcher;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.olat.core.gui.UserRequest;

public class RemoteLoginformDispatcher implements Dispatcher {

    private static final String PARAM_newUrl = "ret";
    private static String newURL;

    @Override
    public void execute(
            final HttpServletRequest request, 
            final HttpServletResponse response, 
            final String uriPrefix) {

        UserRequest ureq = null;

        try {
            ureq = new UserRequest(uriPrefix, request, response);
            newURL = ureq.getParameter(PARAM_newUrl);
        } catch () {
        }

    }

    public String getURL(){
        return newURL;
    }

}

第2课:

public class BaseChiefController extends DefaultChiefController implements ContentableChiefController {
    //Velocity container mainvc created here. It interacts with a html file. Removed the code that would not really matter

    //mainvc.contextPut("newURL", "something");
    //The below statement works. When I try with something, the something appears in the html file.
    mainvc.contextPut("newURL", myLogin.getURL());      

}

1 个答案:

答案 0 :(得分:1)

要创建另一个类的实例,只需创建一个“public CLASSNAME”方法,然后使用“this”修改器定义所有类变量。然后,从该方法中调出您想要使用的函数,当您想要使用该类时,只需执行“new CLASSNAME(args);”

虽然,我不确定我是否理解你的问题。

也许这是你的答案。您可以通过将变量设置为static来使用从一个类到另一个类的变量,然后执行“CLASSNAME.VARIABLENAME = WHATEVER”。


编辑:

好吧,就我所知,你正在使用一种方法从类中返回一个静态值,这比只做“newURL”,RemoteLoginformDispatcher.newURL);慢得多。 为什么不尝试这个,因为它可能更快,并且如果定义了newURL它应该总是有效。否则,您遇到了其他问题,并且未定义newURL。如果是这种情况,请尝试打印捕获的异常。