我有一个使用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());
}
答案 0 :(得分:1)
要创建另一个类的实例,只需创建一个“public CLASSNAME”方法,然后使用“this”修改器定义所有类变量。然后,从该方法中调出您想要使用的函数,当您想要使用该类时,只需执行“new CLASSNAME(args);”
虽然,我不确定我是否理解你的问题。
也许这是你的答案。您可以通过将变量设置为static来使用从一个类到另一个类的变量,然后执行“CLASSNAME.VARIABLENAME = WHATEVER”。
编辑:
好吧,就我所知,你正在使用一种方法从类中返回一个静态值,这比只做“newURL”,RemoteLoginformDispatcher.newURL);慢得多。 为什么不尝试这个,因为它可能更快,并且如果定义了newURL它应该总是有效。否则,您遇到了其他问题,并且未定义newURL。如果是这种情况,请尝试打印捕获的异常。