Ganz nur eine Notiz Ich benutze es beim Abrufen von Daten ohne Bildschirmübergang
Struts2.0.11.2 (zu alt ...) Java 8 (alt ...)
JSP
sample.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<input type="button" value="Senden" onClick="getSampleData();" />
jsonArray.jsp
<!--Muss ich die Antwort so erhalten ...?-->
<%@ page language="java" contentType="text/javascript; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:property value="jsonArray" escape="false"/>
JavaScript(Ajax)
sample.js
function getSampleData() {
new Ajax.Request("GetSampleData.action", {
method : 'GET',
onSuccess : function(res) {
var arr = JSON.Parse(res.responseText);
arr.forEach(function(data){
console.log(data.id + ":" + data.name);
}
},
onError : function() {
console.log("Error");
},
onComplete : function() {
console.log("Complete");
}
})
}
struts.xml
struts.xml
<action name="GetSampleData" class="PATH.BuildSampleData">
<result>PATH/jsonArray.jsp</result>
</action>
Action Class
BuildSampleData.java
package hogehoge.fugafuga
import java.util.ArrayList;
import net.sf.json.JSONObject;
public class BuildLoginData {
private ArrayList<JSONObject> jsonArray = new ArrayList<JSONObject>();
//Ausführen, wenn keine Aktionsmethode angegeben ist()Wird genannt
public String execute() throws Exception {
JSONObject tarou = new JSONObject();
tarou.put("id", 1);
tarou.put("name", "tarou");
jsonArray.add(tarou);
JSONObject hanako = new JSONObject();
hanako.put("id", 2);
hanako.put("name", "hanako");
jsonArray.add(hanako);
return "success";
}
public ArrayList<JSONObject> getJsonArray() {
return jsonArray;
}
public void setJsonArray(ArrayList<JSONObject> jsonArray) {
this.jsonArray = jsonArray;
}
}
Es ist ärgerlich, jsp vorbereiten zu müssen, wenn die Antwort vom Server empfangen wird. Gibt es einen anderen Weg ...?
Recommended Posts