我有一个正在使用速度的java应用程序。我通过使用 ureq.getParameter() 方法提取的 url 在第一页中获取两个变量。其他类之一具有速度容器,我需要将变量之一从 url 发送到该速度容器。我尝试在第二个类中创建第一个类的实例,并使用 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());
}
最佳答案
要创建另一个类的实例,只需创建一个“public CLASSNAME”方法,并在内部使用“this”修饰符定义所有类变量。然后,从该方法中调用您想要使用的函数,当您想使用该类时,只需执行“new CLASSNAME(args);”
尽管如此,我不确定我是否理解你的问题。
也许这就是你的答案。您可以通过将变量设为静态,然后执行“CLASSNAME.VARIABLENAME = WHATEVER”,将变量从一个类使用到另一类。
<小时/>编辑:
好吧,据我所知,您正在使用一种方法从类返回静态值,这比仅执行“newURL”(RemoteLoginformDispatcher.newURL); 慢得多。 为什么不尝试这个,因为它可能更快,而且如果定义了 newURL,它应该总是有效。否则,您会遇到不同的问题,并且 newURL 没有被定义。如果是这种情况,请尝试打印捕获的异常。
关于java - 使用一个类中的变量到另一个java中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12241188/