Struts 태그에서 #, % 및 $ 기호의 차이점은 무엇입니까?
나는 Struts2 함께 일하고 있어요 내가 값 스택 변수에 접근있을 때 내가 사용 여부를 모른다 %
거나 #
또는 $
. 올바른 것을 찾을 때까지 모두 시도합니다.
아무도 이것들의 차이점을 설명 할 수 있습니까?
# (파운드 기호) 사용
OGNL은 다음과 같이 ActionContext의 객체를 참조하는 데 사용됩니다.
objectName
: Action 속성과 같은 ValueStack의 개체 (OGNL 컨텍스트의 기본 / 루트 개체)#objectName
: ActionContext에 있지만 ValueStack 외부에있는 객체, 특히 ...#objectName
: 기본 작업 범위 (예 :<s:set name="foo" value="'Testing'" />
에서 참조<s:property value="#foo" />
) 와 함께 Struts2 데이터 태그를 사용하여 생성 된 ActionContext 객체#parameters.objectName
: 요청 매개 변수#request.objectName
: 요청 범위 속성#session.objectName
: 세션 범위 속성#application.objectName
: 애플리케이션 범위 속성#attr.objectName
: 페이지, 요청, 세션 또는 애플리케이션 범위의 속성 (순서대로 검색 됨)
위의 범위 맵 참조 (매개 변수, 요청, 세션 및 애플리케이션)는 다음 두 가지 방법 중 하나로 만들 수 있습니다.
#scopeName.objectName
또는#scopeName['objectName']
% (퍼센트 기호) 사용
%{ OGNL expression }
일반적으로 문자열 리터럴로 해석되는 속성의 OGNL 평가를 강제하는 데 사용됩니다.
예: <s:property value="myProperty" default="%{myDynamicDefaultValue}" />
@ (at 기호) 사용
@ 기호는 정적 속성 및 메서드를 참조하는 데 사용됩니다. Struts2 속성에서이를 활성화해야 할 수도 있습니다.struts.ognl.allowStaticMethodAccess=true
예 :
@my.package.ClassName@MY_STATIC_PROPERTY
@my.package.ClassName@myStaticMethod
$ (달러 기호) 사용
Struts2 OGNL은 달러 기호를 특별히 사용하지 않습니다. 그러나 일반 JSTL 표현식을 평가하는 데 사용할 수 있습니다. 예를 들면 :
Struts2 : <h1><s:property value="#pageTitle" /></h1>
(같음 ...)
JSTL :<h1>${pageTitle}</h1>
프레임 워크는 표준 명명 컨텍스트를 사용하여 OGNL 표현식을 평가합니다. OGNL을 다루는 최상위 객체는 Map (보통 컨텍스트 맵 또는 컨텍스트라고 함)입니다. OGNL에는 컨텍스트 내에 루트 (또는 기본) 객체가 있다는 개념이 있습니다. 표현식에서 루트 객체의 속성은 특별한 "마커"개념없이 참조 할 수 있습니다. 다른 개체에 대한 참조는 파운드 기호 (#)로 표시됩니다.
프레임 워크는 OGNL 컨텍스트를 ActionContext로 설정하고 값 스택을 OGNL 루트 객체로 설정합니다. (값 스택은 여러 개체의 집합이지만 OGNL에서는 단일 개체로 나타납니다.) 값 스택과 함께 프레임 워크는 애플리케이션, 세션 및 요청 컨텍스트를 나타내는 맵을 포함하여 다른 개체를 ActionContext에 배치합니다. 이러한 객체는 값 스택 (OGNL 루트)과 함께 ActionContext에 공존합니다.
|
|--application
|
|--session
context map---|
|--value stack(root)
|
|--request
|
|--parameters
|
|--attr (searches page, request, session, then application scopes)
자세한 내용은 이것을 참조하십시오
기본적으로 struts2는 객체 값 스택을 최상위 객체로두고 OGNL을 사용하여이를 참조합니다. 루트 객체는 특별한 "마커"없이 또는 %
다른 객체에 대한 참조가 파운드 기호 (#)로 표시됩니다. #은 기본적으로 Application / Session 등에서 객체 / 값을 참조하는 데 사용됩니다.
@Devon Biere를 완료하려면 ...
Use of $ (dollar sign)
You can use ${}
in your resource files too. The struts will automatically use OGNL to parse ${}
. For example
sample.foo.bar=This is some ${someProperty} //If the someProperty is in valueStack
sample.welcome.message=Welcome dear ${#session.CurrentUser.farsiFirstName}
Please note the $
sign here is just a trigger which ask struts to evaluate the string against OGNL, please do not confuse it with ${}
in JSTL
Struts 2 Dynamic message with OGNL
참고URL : https://stackoverflow.com/questions/8007858/whats-the-difference-between-and-signs-in-struts-tags
'Programing' 카테고리의 다른 글
Mercurial에서 단일 개정판을 어떻게 선택합니까? (0) | 2020.11.05 |
---|---|
git push를 할 때“diff.renamelimit 변수”에 대한 경고 (0) | 2020.11.05 |
h : button과 h : commandButton의 차이점 (0) | 2020.11.05 |
Gallery와 같은 HorizontalScrollView를 구현하는 방법은 무엇입니까? (0) | 2020.11.05 |
동일한 템플릿의 Angular2 다중 라우터 콘센트 (0) | 2020.11.05 |