ognl 상세 설명
1 비 즈 니스 컨트롤 러
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class OgnlAction extends ActionSupport {
// List
private List<Person> persons;
// execute
public String execute() throws Exception {
// ActionContext , Servlet API
ActionContext ctx = ActionContext.getContext();
// application
ctx.getApplication().put("msg", "application ");
// session
ctx.getSession().put("msg", "seesion ");
// request
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("msg", "request ");
// persons
persons = new LinkedList<Person>();
Person person1 = new Person();
person1.setName("pla1");
person1.setAge(26);
person1.setBirthday(new Date());
persons.add(person1);
Person person2 = new Person();
person2.setName("pla2");
person2.setAge(36);
person2.setBirthday(new Date());
persons.add(person2);
Person person3 = new Person();
person3.setName("pla3");
person3.setAge(16);
person3.setBirthday(new Date());
persons.add(person3);
return SUCCESS;
}
public List<Person> getPersons() {
return persons;
}
public void setPersons(List<Person> persons) {
this.persons = persons;
}
}
이 업무 컨트롤 러 는 각각 application,session,request 에'msg'라 는 문자열 정 보 를 저장 하고 하나의 List 형식 속성 을 정의 하 며 두 개의 Person 형식 요 소 를 추가 합 니 다.설정 파일 에 해당 하 는 설정 을 추 가 했 습 니 다.코드 는 다음 과 같 습 니 다.
<action name="OgnlAction" class="ch8.OgnlAction">
<result name="success">/showognl.jsp</result>
</action>
2 JSP 보기
showognl.jsp 는 OGNL 표현 식 의 JSP 보 기 를 사 용 했 습 니 다.보 기 는 Action 에서 처리 하 는 여러 가지 정 보 를 표시 합 니 다.독자 들 은 OGNL 표현 식 을 사용 하여 코드 가 더욱 간결 하고 직관 적 입 니 다.
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/ xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Struts2 OGNL </title>
</head>
<body>
<h3> OGNL Action </h3>
<!- OGNL -->
<p>parameters: <s:property value="#parameters.msg" /></p>
<p>request.msg: <s:property value="#request.msg" /></p>
<p>session.msg: <s:property value="#session.msg" /></p>
<p>application.msg: <s:property value="#application.msg" /></p>
<p>attr.msg: <s:property value="#attr.msg" /></p>
<hr />
<h3> (projecting) </h3>
<p> 20</p>
<ul>
<!- -->
<s:iterator value="persons.{?#this.age>20}">
<li><s:property value="name" /> - :<s:property value="age" /></li>
</s:iterator>
</ul>
<p> pla1 : <s:property value="persons. {?#this.name=='pla1'} .{age}[0]"/></p>
<hr />
<h3> Map</h3>
<s:set name="foobar" value="#{'foo1':'bar1', 'foo2':'bar2'}" />
<p>The value of key "foo1" is <s:property value="#foobar['foo1']" /></p>
</body>
</html>
OGNL 의\#,%,$기호
\#,%,$기 호 는 OGNL 표현 식 에 자주 나타 나 는데 이 세 가지 기호 도 개발 자가 파악 하고 이해 하기 어 려 운 부분 입 니 다.여기 서 필 자 는 그것들의 상응하는 용 도 를 간단하게 소개 한다.
1.\#기호
\#기호의 용 도 는 보통 세 가지 가 있다.
— 루트 가 아 닌 대상 속성 에 접근 합 니 다.예 를 들 어 예제 의\#session.msg 표현 식 은 Struts 2 의 값 스 택 이 루트 대상 으로 간주 되 기 때문에 다른 루트 가 아 닌 대상 에 접근 할 때\#접 두 사 를 추가 해 야 합 니 다.실제로\#ActionContext.getContext();\#session.msg 표현 식 은 ActionContext.getContext().getSession().getAttribute("msg")에 해당 합 니 다. 。
— 예제 의 persons.{?\#와 같은 필터 와 투영(procjecting)집합 에 사용 합 니 다.this.age>20}。
— 맵 을 구성 하 는 데 사 용 됩 니 다.예 를 들 어 예제 의\#{'foo 1':'bar 1', 'foo2':'bar2'}。
기호 2.%
%기호의 용 도 는 로고 의 속성 이 문자열 형식 일 때 OGNL 표현 식 의 값 을 계산 하 는 것 입 니 다.아래 코드 와 같이:
<h3> Map</h3>
<s:set name="foobar" value="#{'foo1':'bar1', 'foo2':'bar2'}" />
<p>The value of key "foo1" is <s:property value="#foobar['foo1']" /></p>
<p> %:<s:url value="#foobar['foo1']" /></p>
<p> %:<s:url value="%{#foobar['foo1']}" /></p>
3.$기호
$기 호 는 주로 두 가지 용도 가 있 습 니 다.
— 국제 화 자원 파일 에서 OGNL 표현 식 을 참조 합 니 다.예 를 들 어 국제 화 자원 파일 의 코드:reg.agerange=국제 화 자원 정보:나 이 는${min}과${max}사이 에 있어 야 합 니 다.
— Struts 2 프레임 워 크 의 설정 파일 에서 OGNL 표현 식 을 참조 합 니 다.예 를 들 어 다음 코드 세 션 과 같 습 니 다.
<validators>
<field name="intb">
<field-validator type="int">
<param name="min">10</param>
<param name="max">100</param>
<message>BAction-test : ${min} ${max} !</message>
</field-validator>
</field>
</validators>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JSP| EL (Experession Language)텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.