我想要有一個Action
類,它應該接受由用戶界面構建的JSON字符串,Action
類中沒有setter和getter。從用戶界面接受動態json數據的動作
可能嗎?如果是這樣,我需要在Action
類和配置文件(struts.xml
)中遵循什麼約定?
我想要有一個Action
類,它應該接受由用戶界面構建的JSON字符串,Action
類中沒有setter和getter。從用戶界面接受動態json數據的動作
可能嗎?如果是這樣,我需要在Action
類和配置文件(struts.xml
)中遵循什麼約定?
將它們作爲內容發佈,類型爲"application/json"
。你可以用一個簡單的jQuery Ajax調用來完成,你可以指定content-type
和dataType
。
$.ajax({
type: "POST",
url: "/the/action/url",
data : {},
dataType:"JSON",
contentType: "application/json; charset=utf-8"
});
添加json plugin到項目的依賴與json-lib-2.3-jdk15.jar
。與interceptor json
一起提供的插件,用於從請求中讀取和填充操作。如果你不想填充動作,那麼你不應該使用這個攔截器。而是手動解析請求與這個或任何其他第三方庫來獲得JSONObject
。或者您可以重寫攔截器並評論使用JSONPopulator
的代碼,但使用JSONUtil
反序列化對象。
此外,手動創建/解析JSON數據時,您可能會發現this示例很有用。
如果你要發送的JSON對象,在它的多個鍵值對,你想在你的動作類這些鍵值,而產生的任何設置器/吸氣,
在Action類decleration,我們應該實現ServletRequestAware,我們應該重寫setServletRequest()方法,並設置HttpServletRequest的屬性
public class YourClass extends ActionSupport implements ServletRequestAware
private HttpServletRequest request;
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
public HttpServletRequest getServletRequest() {
return this.request;
}
而且我們有針對性的功能,我們應該使用上述請求對象獲取參數(其名稱,因爲它是在設定json作爲關鍵):
public String fetchData() {
String key1Data = getServletRequest().getParameter("key1");
String key2Data = getServletRequest().getParameter("key2");
return SUCCESS;
}
如果您JSON對象應該具有的數據是這樣的:
var jsonData = {"key1": "Hello", "key2":"There"};
爲什麼沒有getter和setter?否則我可以向你解釋。 – Armaggedon
我有很多靜態json格式嵌入到基於頁面上下文的java腳本文件中,我需要將這些靜態json字符串發送到相應的操作類 –
XSS天堂O_O從服務器而不是客戶端加載它們://// –