2012-09-03 2 views
0

나는 velocity와 함께 동작하는 자바 애플리케이션을 가지고있다. 첫 번째 페이지에서 ureq.getParameter() 메소드를 사용하여 추출한 url을 통해 두 개의 변수를 얻습니다. 속도 컨테이너가있는 다른 클래스 중 하나이며 url의 변수 중 하나를이 속도 컨테이너로 보내야합니다. 두 번째 클래스에서 첫 번째 클래스의 인스턴스를 만들고 getVariable 이름 메서드를 사용하여 작업을 시도했지만 작동하지 않았습니다. 누군가 내가 이것을 할 수있는 방법을 말해 줄 수 있습니까?하나의 클래스에서 다른 자바로 변수를 사용하기

클래스 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

* * general *에서는 한 클래스의 객체를 만들고 메소드 매개 변수를 통해 다른 클래스에 참조를 전달합니다. – adatapost

+0

'velocityContainer.setVariable (theVariable)', 여기서'setVariable()'은 다루는 변수에 대한 적절한 설정자입니다. – moonwave99

답변

1

가 다른 클래스의 인스턴스를 생성하려면, 단순히 "공공 CLASSNAME"방법을 만들고, 내부의 모든 클래스 변수를 정의 " 이 "modfier. 그런 다음 해당 메서드에서 사용할 함수를 호출하고 클래스를 사용하려면 "new CLASSNAME (args);"을 수행하십시오.

비록 귀하의 질문을 이해하고 있는지 잘 모르겠지만.

어쩌면 이것은 당신의 대답입니다. 변수를 정적으로 만든 다음 "CLASSNAME.VARIABLENAME = WHERTVER"를 수행하여 한 클래스의 변수를 다른 클래스에 사용할 수 있습니다.


편집 :

좋아, 지금까지의 내가 말할 수있는, 당신은 단지, RemoteLoginformDispatcher을 "NEWURL"을하는 것보다 훨씬 느립니다 클래스에서 정적 값을 반환하는 방법을 사용하고 있습니다. newURL); 아마도 더 빠를 것이므로이 방법을 사용하지 않는 것이 좋습니다. 그러면 newURL이 정의 된 경우 항상 작동해야합니다. 그렇지 않으면 다른 문제점이 발생하고 newURL이 정의되지 않습니다. 이 경우 잡힌 예외를 인쇄 해보십시오.

+0

제 질문을 편집하여 더 이해하기 쉬운 코드를 포함시킵니다. 미안하지만 분명하지 않다면. – user1439090

+0

코드의 관련 부분을 포함하도록 질문을 편집했습니다. – user1439090

+0

그래, 고마워, 내가 잠시 후에 대답 할께. – JNorr44

관련 문제