비교대상 값이 데이터셋에 들어있다면 expression 중복 적용은 가능합니다.
예를 들면, NATION컬럼의 값을 먼저 비교하고 TYPE컬럼의 값을 비교하고자 하는 경우
다음과 같이 적용 가능합니다.
ex)
mask={if(NATION="KOR", decode(TYPE, 10, "XXX-XXX-XXXX", 11, "XXX-XXXX-XXXX", "XXXXXXXXXXX"), "XX-X-XXX-XXXX")}
그러나 일반적으로 권한 체크의 경우 (데이터셋에 담아서 처리하는 경우가 아니라면) decode보다는 스크립트로 구현하는 편이 더 간단할 것 같네요.
예를 들면, 권한 체크값 user을 먼저 비교하고 TYPE컬럼의 값을 비교하려면
다음과 같이 적용 가능합니다.
ex)
if(user == "admin"){
if(DataSet.NameValue(DataSet.RowPosition, "TYPE") == 10){
Grid.ColumnProp('PHONE_NO', 'Mask') = ''XXX-XXX-XXXX';
}else if(DataSet.NameValue(DataSet.RowPosition, "TYPE") == 11){
Grid.ColumnProp('PHONE_NO', 'Mask') = 'XXX-XXXX-XXXX';
}else{
Grid.ColumnProp('PHONE_NO', 'Mask') = 'XXXXXXXXXXX';
}
}else if(user == "dev"){
if(DataSet.NameValue(DataSet.RowPosition, "TYPE") == 10){
Grid.ColumnProp('PHONE_NO', 'Mask') = ''XXX-XXX-XX**';
}else if(DataSet.NameValue(DataSet.RowPosition, "TYPE") == 11){
Grid.ColumnProp('PHONE_NO', 'Mask') = 'XXX-XXXX-XX**';
}else{
Grid.ColumnProp('PHONE_NO', 'Mask') = 'XXXXXXXXX**';
}
}else{
if(DataSet.NameValue(DataSet.RowPosition, "TYPE") == 10){
Grid.ColumnProp('PHONE_NO', 'Mask') = ''XXX-XXX-****';
}else if(DataSet.NameValue(DataSet.RowPosition, "TYPE") == 11){
Grid.ColumnProp('PHONE_NO', 'Mask') = 'XXX-XXXX-****';
}else{
Grid.ColumnProp('PHONE_NO', 'Mask') = 'XXXXXXX****';
}
}
첨부된 샘플 참고하세요.
파일 다운로드가 안되신다면 브라우저의 도구 - 인터넷옵션 - 고급 - 국제(UTF8 URL 링크보내기) 체크를 풀어주세요.
>게시판을 이용해 주셔서 감사합니다.
>다음양식에 맞게 입력해주세요.
>
>* 고객시스템명 :
>* GAUCE 버전 : 4.0
>* WAS 종류(WebLogic 등등) : Weblogic
>* DB 종류 : Oracle
>* 문의 유형(질문/요청/참조) : 질문
>* 내용 :
>
>"*" 로 Masking 처리하려고 하는데
>대상이 계좌번호 입니다.
>
>은행에 따라서 계좌번호 길이가 11, 12 ~ 19 자리로 다양.
>계좌번호의 맨뒤 4자리만 "*" 마스킹 처리.
>접속 user 의 권한에 따라 마스킹을 처리 안할수도 있음.
>
>
>아래 방법에 usr 권한 체크 로직을 넣으면 될거 같은데..
>
>mask={decode(AccCount,11,'XXX-XX-XXXXXX',5,'XX-XXX',6,'XXXX-XX')} bgcolor={decode(AccCount,11,'pink')}
>
>어떻게 하는게 좋을지 조언 부탁드립니다.
>