현재 자바 웹 응용 프로그램에서 JSON 플러그인 (https://struts.apache.org/docs/json-plugin.html)을 구성해야합니다. 내가 한 짓 :속성 setData [JSON + Struts2 plugin]의 호환되지 않는 유형
1) pom.xml
파일에 플러그인의 모든 종속성을 추가했습니다.
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-json-plugin</artifactId>
<version>2.3.24.1</version>
</dependency>
2) 내 행동에 JSON
<action name="myMainAction"
class="org.com.action.myMainAction">
<interceptor-ref name="json">
<param name="enableSMD">true</param>
</interceptor-ref>
<result type="json">
</result>
<param name="requiredAuthorities">F_ADD</param>
</action>
4) 생성 된 모델의 인터셉터와 결과 유형을 추가 json-default
<package name="my-test-package" extends="xxx, json-default"
namespace="/my-test-package">
3)과 struts.xml에서 패키지를 확장 클래스 Marriage
에만 setter/getters가 있습니다.
5)는 JSON
개체를 만든 다음 코드
private List <Marriage> data;
public List<Marriage> getData() {
return data;
}
public void setData(List<Marriage> data) {
System.out.println("Inside the setter ");
this.data = data;
}
@Override
public String execute() throws Exception {
System.out.println(data.get(0).getLastNameHe());
return SUCCESS;
}
6)와 myMainAction
으로 명명 작업 클래스를 생성하여 서버에 ajax
통해 통과시켰다. Google 크롬 콘솔을 통해 데이터를 보내고 JSON 개체를 구문 분석하고 모든 데이터가 거기에 있다는 것을 알 수 있습니다. ,
Exception occurred during processing request: Incompatible types for property setData (CommonsLogger.java [qtp1144623021-22]) org.apache.struts2.json.JSONException: Incompatible types for property setData
가 일부 올바른 방향으로 날 지점 시겠어요 그것은 내가 일하고 있어요 거의 둘째 날하지만 그렇지 않습니다 : 그러나, 내 이클립스 또한 크롬 콘솔에서 예외가 발생하지 일하기 시작하는 것 같습니다.
EDIT1 : 자바 측으로 전송되는 데이터이며 Chrome 콘솔을 통해 볼 수 있습니다.
{"data":{"recordId":"123","registrationDate":"20-07-2016","hisId":"","herId":"","lastNameHe":"Asd","firstNameHe":"Asd","middleNameHe":"Asd","workPlaceHe":"","educationHe"}}
이것은 JSON.stringify
-ed 이후의 개체입니다. 여러분이 볼 수 있듯이 변수는 루트 data
이며, 나머지 모든 데이터는 그 밑으로 가게됩니다. 내 논리에 따르면 티는 내 Java 클래스에서 데이터의 setter
을 찾고 해당 클래스의 setters/getters를 호출해야합니다. P.S 클래스 이름 등의 이름을 변경하여 이름 지정 규칙에 대해 걱정할 필요가 없습니다.) 제작 코드에서 올바른 것이 있습니다.
EDIT2 : 내 실수 @AleksandrM에 지적
감사합니다. 나는 그것이 string
date
에 그리고 수를 설정하려고 알고있는 것처럼
private Date registrationDate;
public Date getRegistrationDate() {
return registrationDate;
}
public void setRegistrationDate(Date registrationDate) {
this.registrationDate = registrationDate;
:
Unparseable date: "20-07-2016" (CommonsLogger.java [qtp212900572-17]) java.text.ParseException: Unparseable date: "20-07-2016"
이 부분에 대한 json
변수가 registrationDate
이며, JAVA의 구현 : 이제 그것은 매우 이상한 오류가 발생합니다 그럴 수 없어. json-plugin이 변환 할 수없는 이유는 무엇입니까? 옵션/설정에 무엇을 써야합니까?
json 인터셉터 대신 defaultStack과 json 인터셉터를 사용할 경우 작동합니까? Marriage에는 기본 no-args 생성자가 있습니까 (또는 생성자 없음)? P.S : alowcase 문자로 시작하는 자바 클래스가 좋지 않다. –
'defaultStack' +'json' 인터셉터를 사용해야한다. 제출할 데이터를 표시하십시오. –
@AndreaLigios, 나는 그것이 defaultStack의 문제 또는 스트럿츠의 인터셉터 위치라고 생각하지 않습니다. 그리고 내 Marraige 클래스에는 생성자가 없습니다. 그 Marraige 클래스는 최대 절전 모드와 연결되어 db 테이블 등을 만들고, 그 클래스의 목적은 단지 그것을 설명하는 순수한 모델 일뿐입니다. – Daler