前端 AJAX
$.ajax({
type: "POST",
url: "saveCourseType",
contentType: "application/json", // 關鍵:聲明發送 JSON
data: JSON.stringify({ rows: [...]}), // 將對象序列化為 JSON 字符串
dataType: "json",
success: function(resp) { ... }
});
後端 Action
public class CourseAction extends ActionSupport {
private String jsonData; // 接收原始 JSON 字符串
// 或直接映射到對象
private CourseType courseType;
public void setJsonData(String jsonData) { this.jsonData = jsonData; }
public void setCourseType(CourseType ct) { this.courseType = ct; }
public String save() {
// 方式1:手動解析 jsonData (用 Gson/Jackson)
// 方式2:Struts2 JSON 插件自動將 JSON 映射到 courseType 對象
return SUCCESS;
}
}
struts.xml 配置
<package name="default" extends="struts-default, json-default">
<action name="saveCourseType" class="com.example.CourseAction" method="save">
<result type="json">
<param name="root">responseObj</param> <!-- 返回對象 -->
</result>
</action>
</package>
關鍵點
- 前端設置 `contentType: "application/json"`。
- Struts2 需引入 `struts2-json-plugin.jar`,且 package 繼承 `json-default`。
- Action 屬性需提供 setter,支持基本類型、List、Map、自定義 Bean 自動映射。