바인딩할 변수명을 기술한다.
Graha에서 사용되는 변수들은 다음과 같다.
1. 일반적인 변수
- param. : request.getParameter
- prop. : header / prop 요소에서 정의한 것
- header. : request.getHeader
- session. : session.getAttribute
- header.method : request.getMethod()
- header.remote_user : request.getRemoteUser()
- header.remote_addr : request.getRemoteAddr()
- header.remote_host : request.getRemoteHost()
- header.remote_user_roles : Apache Tomcat 에서 HTTP 인증을 한 경우 role 정보(String[])
- header.scheme : request.getScheme()
- code.{code 요소의 name속성값}.firstValue : code 요소로 생성되는 첫 번째 값
4. 특수한 변수
- att. : request.getAttribute (서블릿 필터 따위에서 setAttribute 로 설정한 경우에만 사용할 수 있다)
- uploaded.file.path.{index} : 업로드한 파일 경로 (이건 insert 기능에서만, 그리고 processors / processor[@after = "true"] 만 사용 가능하다)
- init-param. : request.getServletContext().getInitParameter
5. Graha 내부적으로 사용하는 특수한 변수
- system.context.root.realpath : Context Root 의 서버상의 물리적 경로(
request.getServletContext().getRealPath("/") 와 같다)
- system.context.root.path : Context Root 의 서버상의 물리적 경로(
request.getServletContext().getRealPath("/") 와 같다) (가급적 위의 것을 사용한다)
- system.prefix : Context PATH + Graha 기본 디렉토리(web.xml 파일의 servlet-mapping 에서 url-pattern으로 기술된 경로)
- system.suffix : 요청 URL 의 확장자
- system.config.file.name : Graha XML 환경설정 파일 이름 (확장자 제외)
- system.context.path : Context Path(
request.getContextPath() 와 같다)
- system.output : query 요소의 output 속성값 (rdf 혹은 xml)
- system.htmltype : query 요소의 htmltype 속성값 (div 혹은 table)
예를 들어 요청 URL 이 /memo/graha/memo/list.xml 와 같은 경우 다음과 같다.
- system.prefix : /memo/graha
- system.suffix : .xml
- system.config.file.name : memo (두번째 memo)
6. sql 실행결과로부터 만들어지는 변수 ("query.")
6.1. funcType 속성값이 "detail", "user", "report", "insert" 인 경우에 만들어 지는 것
- query.{command 요소의 name 속성}.{컬럼이름}
- query.{table 요소의 name 속성}.{컬럼이름}
command 혹은 table 요소의 name 속성이 생략된 경우 이 변수는 찾을 수 없다.
{컬럼이름} 뒤에 {일련번호} 가 붙어 있는 형태는 더이상 지원하지 않는다.
6.2. funcType 속성값이 "query" 인 경우
- query.row.{command 요소의 name 속성}.count : PreparedStatement 내지 CallableStatement 의 getUpdateCount() 메소드의 결과값. command 요소의 name 속성이 있는 경우에만 처리한다.
- query.row.total_affected_count : 위 값의 합계
6.3. funcType 속성값이 "list", "detail", "user", "report" 인 경우
- query.row.{command 요소의 name 속성}.count : 데이타베이스에서 가져온 row의 갯수. command 요소의 name 속성이 있는 경우에만 처리한다.
- query.row.total_fetch_count : 위 값의 합계
- query.total.count : "list" 에서 전체 게시물 갯수
6.4. funcType 속성값이 "delete" 인 경우
- query.row.{command 요소의 name 속성}.count : PreparedStatement 내지 CallableStatement 의 getUpdateCount() 메소드의 결과값. command 요소의 name 속성이 있는 경우에만 처리한다.
- query.row.total_delete_count : 위 값의 합계
6.5. funcType 속성값이 "insert" 인 경우
6.5.1. GET 요청인 경우
- query.row.{command 요소의 name 속성}.count : 데이타베이스에서 가져온 row의 갯수. command 요소의 name 속성이 있는 경우에만 처리한다.
- query.row.total_fetch_count : 위 값의 합계
6.5.2. POST 요청인 경우
- query.row.{command 요소의 name 속성}.count : PreparedStatement 내지 CallableStatement 의 getUpdateCount() 메소드의 결과값. table 요소가 여러 개 + command 요소의 name 속성이 있는 경우에만 처리한다.
- query.row.count : PreparedStatement 내지 CallableStatement 의 getUpdateCount() 메소드의 결과값. table 요소가 1개 + command 요소의 name 속성이 있는 경우에만 처리한다.
- query.row.total_update_count : 위 값들의 합계
7. processor 에서 만들어진 변수(result.)
processor 에서 지정한 class 속성값의 Java Class 에서 설정한 변수로서 다음과 같이 설정할 수 있다.
params.put("result.{변수}", "{값}")
만약 여기서 지정한 값이 null 이고 기본값(default 속성) 이 지정된 경우 sql 실행 과정에서 기본값을 변경된다는 것을 주의한다.
8. <validation> 에서 만들어지는 변수
- error.error :
<validation> 의 <param> 을 통과하지 못하면, msg 속성값을 담고, 에러 화면으로 이동한다.
error.error 는 processor 에서 명시적으로 담을 수 있지만,
funcType 속성값이 "query", "report" 에서만,
에러 화면으로 이동시킨다.
|