Struts2 通過 struts2-json-plugin 輕鬆實現 Action 直接返回 JSON。關鍵在於:繼承 json-default 包、結果類型設為 json、核心參數 root 指定 OGNL 表達式根對象(不可改名)。本文提供最小化可運行配置與實體類示例。
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-json-plugin</artifactId>
<version>2.3.24</version>
</dependency>
public class User {
private int id;
private String username;
// getter/setter 省略
}
public class JsonAction extends ActionSupport {
private User user;
public String execute() {
user = new User();
user.setId(123);
user.setUsername("Irasel");
return SUCCESS;
}
public User getUser() { return user; } // 必須提供 getter,OGNL 訪問屬性
public void setUser(User user) { this.user = user; }
}
<package name="resultJson" namespace="/" extends="json-default">
<action name="resultJson" class="com.mz.action.JsonAction">
<result name="success" type="json">
<!-- root 必須寫死為 "root",不可改為其他名稱 -->
<param name="root">user</param>
</result>
</action>
</package>
JSONResult 將 root 對象序列化為 JSONuser 屬性)。參數名必須為 root,不能改啟動 Tomcat,訪問:https://localhost:8080/你的項目/resultJson
預期輸出:
{
"id": 123,
"username": "Irasel"
}
root 參數值是否與 Action 屬性名一致、getter 是否存在struts.json.date.format=yyyy-MM-dd HH:mm:ss 或在 Action 中手動格式化excludeProperties 或使用 DTO 打破循環web.xml 配置 CharacterEncodingFilter、Tomcat URIEncoding="UTF-8"<result name="success" type="json">
<param name="root">user</param>
<param name="excludeProperties">password,secret.*</param>
<param name="includeProperties">id,username,email</param>
</result>
掌握 root 參數與 OGNL 表達式,Struts2 返回 JSON 即刻上手。