2015-02-04 2 views
2

기술 사용 Struts2 및 JSP Jsp에서 세션 값이 설정되었는지 여부를 확인합니다. JSP (동작 클래스 (struts2)에서 JSP로 변수 전달)

<s:if test="%{#session.sessionKey}"> 

지금 나는 (내가 세션 범위에서이 변수를 설정할 수 없습니다.), 지금 내 세션 키가 rndmVar 값으로 추가 sessionKey 변수가 될 것이다, 그래서이 새를 확인하는 방법 내 Action 클래스에서 다른 확률 변수 rndmVar이 JSP의 세션 키

내가 내가 JSP에서 그것을 확인하는 방법을 JSP로 액션 클래스에서이 변수를 전달하고, 이상의 방법

<s:if test="%{#session.sessionKey+rndmVar}"> //session key appended by rndmVar value. 

첫 번째 문제 같은 것을 원한다.

제가 작용 클래스 (클래스의 작업이 방법은 JSP로 리디렉션한다.)의 방법에 비해

public String rndmVar; 
public String getRndmVar() { 
    return rndmVar; 
} 
public void setRndmVar(String rndmVar) { 
    this.lang = lang; 
} 

같은 시도,이 랜덤 변수 값 걸렸고.

setRndmVar("rndmfdfkad"); 

var rndmVar이 값 스택에 추가되었으며 OGNL을 사용하여 액세스 할 수 있다고 생각했습니다. 그러나 이것은 효과가 없었습니다.

친절하게 당신의 의견을주세요, 당신의 도움은 많이 apprecified.Try이 주제에 아이디어의 부족에 심지어 고전처럼 들리 네요. 나는 이것으로 놀려고 노력하고 있습니다. 그러나 아무데도 없어.

이제 액션 클래스에 세션 객체에 값을 넣겠습니다.

String randomVar="fadfjk"; 
String newSessionKey="sessionKey"+randomVar; 
session.put(newSessionKey,"value_part"); 

이제 Jsp에서 newSessionKey 변수가 설정되었는지 확인하고 싶습니다. 이제는 동적으로 키 값을 JSP에 전달할 수 있습니다.

@Aleksandr M ... 구문 위

<s:if test="#session['sessionKey' + rndmVar] != null"> 

가 작동하지 않습니다, 가리키고 항상 널 포기하고 다른 루프 것입니다. 내 액션 클래스

session.put("sessionKey"+rndmVar,"businessList"); //where businessList is ArrayList<BusinessLogicDTO> businessList 

에서

나는 JSP에서 scriplet 태그에 rndmVar 값을 볼 수 있어요. 값 유형 Boolean의 경우를 제외하고

<% System.out.println(" Random var value passed from action class 2 JSP "+request.getParameter("rndmVar")); %> 
+0

임의의 값을 세션 키에 추가 할 때 요점은 무엇입니까? –

+0

@Aleksandr M - 기본적으로이 난수는 새 임의 변수보다 uerr 사용 '새 탭에서 열기'옵션을 사용하는 경우 내 탭에 고유합니다 (사용자가 수행 한 모든 작업에 대해 해당 탭에서 고유합니다) 새 탭. 세션은 모든 브라우저 탭에서 공유하므로 키로 구분됩니다. – user752590

+0

@Aleksandr M - 아직까지는 JVM의 일부 공유 객체에 의해/정적 hashmap에 대한 비즈니스 로직에 의해 결정되지 않았습니다. – user752590

답변

2

를 사용하여 객체를 확인할 수 있습니다 #session에 넣고있어이 페이지 인 경우 이 특정 동작의 결과는 JSP에서이 변수에 액세스 할 수 있습니다.

<s:if test="#session['sessionKey'+ #parameters['rndmVar'][0]]"> 

는 참고 #parameters['some_key']가의 배열을 반환합니다 요청 매개 변수이 사용에서

<s:if test="#session['sessionKey' + rndmVar] != null"> 

rndmVar 값을 얻으려면 :

<s:property value="rndmVar"/> 

이 세션 사용에서 원하는 값을 얻으려면 문자열은 요청에 some_key이있는 둘 이상의 매개 변수가 될 수 있기 때문에 문자열입니다. 따라서이 배열의 첫 번째 매개 변수를 원하면 [0]을 사용해야합니다.

또한 여러 탭의 세션 데이터 관리에 대한 힌트를 얻으려면 this question을 확인하십시오.

1

당신은 값을 확인 할 수는 다음과 같이 설정됩니다. 대신 값을 설정하지 않으면 null을 포함해야합니다. 그럼 당신은 임의의 값이 sessionKey에 의해 정의 컬렉션에 대한 인덱스로 사용할 수 있습니다이

<s:if test="#session.sessionKey != null"> 

처럼 확인할 수 있습니다.예를 들어

sessionKeyMap<String, Object>이며, 그 다음에 당신이 당신의 행동 게터/세터와 rndmVar 필드가있는 경우 임의의 값

<s:if test="#session.sessionKey[rndmVar] != null"> 
+0

... 제 문제를 명확히 할 수 없었기 때문에 친절하게 제발 편집 된 secion을 보시기 바랍니다. – user752590

+1

getter를 사용하여 액션에서 가져올 수있는 키 값이지만 sessionKey에 맵을 사용하고 임의의 세션 변수 대신 키를 사용하여 액세스하는 것이 좋습니다. –

+0

\t \t \t \t \t \t \t \t \t \t \t

\t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t

Hi

\t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t
\t \t \t \t \t \t \t \t \t \t –