Struts - json - plugin 사용 설명서 (공식 문서 번역)
JSON 플러그 인 은 "json" 결과 형식 을 제공 하여 action 을 JSON 으로 정렬 합 니 다. 이 직렬 화 과정 은 재 귀적 입 니 다. 즉, 전체 대상 그림 입 니 다. action 류 부터 (기본 클래스 포함 되 지 않 음) 직렬 화 됩 니 다 ("root" 속성 으로 자신의 루트 대상 을 지정 할 수 있 습 니 다). json 차단 기 를 사용 하면 action 은 요청 한 JSON 내용 을 통 해 조립 할 수 있 습 니 다.이 차단 기 는 다음 과 같은 몇 가지 규칙 을 따른다.
{
"doubleValue": 10.10,
"nestedBean": {
"name": "Mr Bean"
},
"list": ["A", 10, 20.20, {
"firstName": "El Zorro"
}],
"array": [10, 20]
}
action 에는 "setDoubleValue" 방법 이 있어 야 합 니 다. 매개 변 수 는 "float" 또는 "double" (차단기 가 값 을 해당 하 는 형식 으로 변환 합 니 다) 입 니 다. "setNestedBean" 방법 도 있어 야 합 니 다. 매개 변 수 는 모든 종류 로 할 수 있 습 니 다. 그 중에서 "String" 인 "setName" 방법 이 포함 되 어 있 습 니 다. "List" 인 "setList" 방법 도 있어 야 합 니 다.이 List 에는 "A" (String), 10 (Long), 20.20 (Double), Map ("firstName" - > "El Zorro") 이 포 함 됩 니 다. "setArray" 방법 은 "List" 또는 모든 숫자 형식의 배열 을 매개 변수 로 할 수 있 습 니 다.
대상 을 자바 script 의 JSON 으로 정렬 합 니 다. 참고 json2
설치 하 다.
이 플러그 인 은 응용 프로그램의 / WEB - INF / lib 디 렉 터 리 에 플러그 인 jar 를 패키지 하여 설 치 를 완료 할 수 있 습 니 다. 복사 하거나 만 들 파일 이 없습니다.
maven 을 사용 하면 다음 pom 에 추가 합 니 다:
<dependencies>
...
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-json-plugin</artifactId>
<version>STRUTS_VERSION</version>
</dependency>
...
</dependencies>
맞 춤 형 직렬 화 와 반 직렬 화
JSON 주 해 를 사용 하여 맞 춤 형 직렬 화 와 반 직렬 화 과정 을 달성 합 니 다. 사용 가능 한 JSON 주 해 는 다음 과 같 습 니 다.
이름 설명 기본 값 직렬 화 반 직렬 화
name
맞 춤 형 필드 이름
empty
yes
no
serialize
표 지 는 직렬 화 될 수 있다.
true
yes
no
deserialize
표 지 는 역 직렬 화 될 수 있다.
true
no
yes
format
Date 필드 의 형식 을 포맷 하거나 해석 할 때 사용 합 니 다.
"yyyy-MM-dd'T'HH:mm:ss"
yes
yes
속성 제거
쉼표 로 구 분 된 정규 표현 식 목록 은 JSON Result 와 Interceptor (차단기) 에 전 달 됩 니 다. 정규 표현 식 과 일치 하 는 속성 은 직렬 화 과정 에서 무 시 됩 니 다.
<!-- Result fragment -->
<result type="json">
<param name="excludeProperties">
login.password,
studentList.*\.sin
</param>
</result>
<!-- Interceptor fragment -->
<interceptor-ref name="json">
<param name="enableSMD">true</param>
<param name="excludeProperties">
login.password,
studentList.*\.sin
</param>
</interceptor-ref>
속성 포함
쉼표 로 구 분 된 정규 표현 식 목록 은 JSON Result 에 전 달 됩 니 다. 어떤 속성 이 직렬 화 에 사용 되 는 지 제한 합 니 다. 정규 표현 식 과 일치 하 는 속성 만 직렬 화 출력 에 포 함 됩 니 다.
주: 속성 표현 식 을 제외 하 는 것 은 속성 을 포함 하 는 표현 식 보다 우선 합 니 다. 즉, 표현 식 을 포함 하고 배제 하 는 것 이 같은 결과 에 적용 된다 면 표현 식 을 포함 하 는 것 은 표현 식 이 일치 하 는 속성 에 도움 이 되 지 않 습 니 다.
<!-- Result fragment -->
<result type="json">
<param name="includeProperties">
^entries\[\d+\]\.clientNumber,
^entries\[\d+\]\.scheduleNumber,
^entries\[\d+\]\.createUserId
</param>
</result>
루트 개체
"root" 속성 (OGNL 표현 식) 을 사용 하여 직렬 화 에 사용 할 루트 대상 을 지정 합 니 다.
<result type="json">
<param name="root">
person.job
</param>
</result>
"root" 속성 (OGNL 표현 식) 은 이 대상 이 null 이 아 닌 지 확인 하기 위해 서 차단기 에 도 사용 할 수 있 습 니 다.
<interceptor-ref name="json">
<param name="root">bean1.bean2</param>
</interceptor-ref>
포장 하 다.
어떤 이유 가 있 을 수 있 습 니 다. JSON 출력 에 텍스트 로 포장 하고 싶 습 니 다. 주석 패키지 에 접 두 사 를 붙 이거 나 파일 로 업로드 하여 결 과 를 textarea 에 표시 하려 고 합 니 다. wrapPrefix 로 시작 부분 에 내용 을 추가 하고 wrapPostfix 로 끝 에 내용 을 추가 합 니 다. 이 두 매개 변 수 는 우선 사용 합 니 다. "wrap With Comments" 와 "prefix" 는 우선 사용 합 니 다.0.34 이후 추천 하지 않 습 니 다. 예:
설명 진행:
<result type="json">
<param name="wrapPrefix">/*</param>
<param name="wrapSuffix">*/</param>
</result>
접두사 추가:
<result type="json">
<param name="wrapPrefix">{}&&</param>
</result>
패키지 가 업로드 한 파일 내용:
<result type="json">
<param name="wrapPrefix"><![CDATA[<html><body><textarea>]]></param>
<param name="wrapSuffix"><![CDATA[</textarea></body></html>]]></param>
</result>
주석 으로 소포
wrapWithComments 는 0.34 에서 추천 하지 않 습 니 다. wrapPrefix 와 wrapSuffix 를 사용 하 는 것 을 권장 합 니 다.
wrap With Comments 는 안전 한 JSON 텍스트 를 안전 하지 않 게 만 들 수 있 습 니 다. 예 를 들 어, ["* / alert ('XSS'); / *"] Douglas Crockford 의 힌트 감사합니다!prefix 를 사용 하 는 것 을 고려 해 야 합 니 다.
직렬 화 된 JSON 이 {name: 'El Zorro'} 이 라면 출력 은 {} & & ({name: 'El Zorro'} 입 니 다.
"wrap With Comments" (기본 값 false) 속성 이 true 로 설정 되 어 있 으 면 소포 에 설명 되 어 있 는 JSON 은 다음 과 같 습 니 다.
/* {
"doubleVal": 10.10,
"nestedBean": {
"name": "Mr Bean"
},
"list": ["A", 10, 20.20, {
"firstName": "El Zorro"
}],
"array": [10, 20]
} */
위의 설명 을 취소 하려 면 사용 가능:
var responseObject = eval("("+data.substring(data.indexOf("\/\*")+2, data.lastIndexOf("\*\/"))+")");
접두사
prefix 는 0.34 이후 사용 을 권장 하지 않 습 니 다. wrapPrefix 와 wrapSuffix 를 사용 하 십시오.
인자 prefix 가 true 로 설정 되면 생 성 된 JSON 에 접두사 "{} & & &" 가 붙 습 니 다. 이것 은 납 치 를 방지 하 는 데 도움 이 됩 니 다. 자세 한 내용 은 this Dojo Ticket 을 보십시오.
<result type="json">
<param name="prefix">true</param>
</result>
기본 클래스
기본적으로 "root" 대상 에 정 의 된 기본 클래스 의 속성 은 직렬 화 되 지 않 습 니 다. 모든 기본 클래스 (Object 까지) 의 속성 을 직렬 화 하려 면 JSON result 에 "ignoreHierarchy" 를 false 로 설정 해 야 합 니 다.
<result type="json">
<param name="ignoreHierarchy">false</param>
</result>
매 거 유형
기본적으로 Enum 은 name = value 쌍 으로 정렬 되 어 있 습 니 다. 여기 value = name ().
public enum AnEnum {
ValueA,
ValueB
}
JSON: "myEnum":"ValueA"
result 의 인자 인 "enumasbean" 을 사용 하면 Enum 을 하나의 bean 처럼 직렬 화 할 수 있 습 니 다. 특정한 속성 은 name 이 고 값 은 name () 입 니 다. 모든 매개 속성 은 직렬 화 됩 니 다.
public enum AnEnum {
ValueA("A"),
ValueB("B");
private String val;
public AnEnum(val) {
this.val = val;
}
public getVal() {
return val;
}
}
JSON: myEnum: { "_name": "ValueA", "val": "A" }
struts. xml 에서 이 인 자 를 사용 합 니 다:
<result type="json">
<param name="enumAsBean">true</param>
</result>
압축 출력.
enableGZIP 속성 을 true 로 설정 하면 gzip 압축 응답 출력 을 사용 할 수 있 습 니 다. 요청 후 "Accept - Encoding" 헤더 에 "gzip" 이 포함 되 어야 정상적으로 작 동 할 수 있 습 니 다.
<result type="json">
<param name="enableGZIP">true</param>
</result>
브 라 우 저 캐 시 응답 데이터 방지
noCache 를 true (기본 값 false) 로 설정 하면 다음 응답 헤더 가 설 정 됩 니 다.
<result type="json">
<param name="noCache">true</param>
</result>
값 이 null 인 속성 제거
기본적으로 null 필드 도 직렬 화 되 어 {property name: null} 을 생 성 합 니 다. excludeNull Properties 를 true 로 설정 하여 방지 할 수 있 습 니 다.
<result type="json">
<param name="excludeNullProperties">true</param>
</result>
상태 및 오류 코드
status 코드 를 사용 하여 응답 상태 코드 를 설정 합 니 다:
<result type="json">
<param name="statusCode">304</param>
</result>
동시에 errorCode 를 사용 하여 오 류 를 보 낼 수 있 습 니 다. (server might end up sending something to the client which is not the serialized JSON):
<result type="json">
<param name="errorCode">404</param>
</result>
JSONP
To enable JSONP, set the parameter callbackParameter in either the JSON Result or the Interceptor. A parameter with that name will be read from the request, and it value will be used as the JSONP function. Assuming that a request is made with the parameter "callback"="exec":
<result type="json">
<param name="callbackParameter">callback</param>
</result>
And that the serialized JSON is {name: 'El Zorro'}. Then the output will be: exec({name: 'El Zorro'})
Content Type
Content type will be set to application/json-rpc by default if SMD is being used, or application/json otherwise. Sometimes it is necessary to set the content type to something else, like when uploading files with Dojo and YUI. Use the contentType parameter in those cases.
<result type="json">
<param name="contentType">text/html</param>
</result>
이상 은 선배 "꾀꼬리" 이 문서 에 대한 번역 입 니 다. 선배 님 의 헌신 에 감 사 드 립 니 다. 상기 번역 부분 을 제외 하고 원문 에는 세 가지 구체 적 인 범례 가 있 습 니 다. 일반적인 JSON 호출 을 시범 하 는 것 외 에 JSON RPC 범례 가 있 습 니 다. 필 자 는 잘 모 르 겠 습 니 다. 여기 서 더 이상 말 할 수 없습니다. 원문 주소: https://cwiki.apache.org/confluence/display/WW/JSON+Plugin 관심 있 는 동 화 는 가 볼 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
콘텐츠 SaaS | JSON 스키마 양식 빌더Bloomreach Content를 위한 JSON Form Builder 맞춤형 통합을 개발합니다. 최근 Bloomreach Content SaaS는 내장 앱 프레임워크를 사용하여 혁신적인 콘텐츠 유형 필드를 구축할...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.