文章分類:Web前端這兩天要實(shí)現(xiàn)用jquery讀取后臺(tái)數(shù)據(jù)加載到前臺(tái)顯示,網(wǎng)上找了很多教程,大同小異,最終還是摸出來的.感謝互聯(lián)網(wǎng)
我使用的是springside3.2,struts版本是2.18
一,首先是包的問題
開始根據(jù)網(wǎng)上下載了google的jsonplugin包,運(yùn)行出錯(cuò)java.lang.NoClassDefFoundError:com/opensymphony/xwork2/util/TextUtils,到apache網(wǎng)站上發(fā)現(xiàn)從struts2.17開始就不再使用google的那個(gè)jsonplugin包了,不過官網(wǎng)沒找到下載的鏈接,搜索下載了struts2-json-plugin-2.1.8.1.jar,json-lib-2.2.3-jdk15.jar,加載到項(xiàng)目后正常,除外lib還應(yīng)包含commons-beanutils.jar,commons-collections.jar,commons-logging.jar,commons-lang.jar
二,Struts2中Action的配置
由于使用注解方式配置action,不用配置struts.xml.由于action類的父java包需要繼承json-default,返回json數(shù)據(jù),所以再新建一個(gè)專門返回json數(shù)據(jù)的action類,
//ParentPackage注解用來定義具體action類的父XWork包或java包,一定要配置
@ParentPackage("json-default")
//命名空間
@Namespace("/management")
//此action類所有方法返回json對(duì)象,必須配置
@Results(
{@Result(type="json")})
publicclass JsonAction extends ActionSupport{
//此處通過spring注入type的管理類,用來執(zhí)行查詢數(shù)據(jù)庫動(dòng)作
@Autowired
privateTypeManager typeManager;
//返回的LIST數(shù)據(jù),type是一個(gè)普通的javabean對(duì)象,這里只有id跟name屬性
//返回success,json-lib會(huì)將所有java屬性轉(zhuǎn)換成一個(gè)的json數(shù)組,也可以直接在方法中返回JSONResult
private List<Type> typeList = new ArrayList<Type>();
……
//此處省略typeList的get和set方法,必須
publicStringfileType(){
typeList=typeManager.getAllType();
return SUCCESS;
} }
//如果使用struts.xml,則配置如下
<struts>
<packagename="management" extends="json-default">
<actionname="Json" class="com.JsonAction">
<resulttype="json"/>
</action>
</package>
</struts>
三,jquery查詢
也可以使用$.ajax()方法,這里使用getJSON()方法,只配置請(qǐng)求路徑跟處理結(jié)果的方法,data值返回的是頁面所有的屬性組成的一個(gè)數(shù)組,可使用data.屬性名取得相應(yīng)對(duì)象,若程序無出錯(cuò)提示,但獲取不到數(shù)據(jù),可能是返回結(jié)果的結(jié)構(gòu)讀取不正確,可直接在地址欄上輸入完整的請(qǐng)求路徑,可以將返回的結(jié)果打開或下載,用記事本打開即可看到返回的json數(shù)據(jù),再根據(jù)結(jié)構(gòu)讀取.從firebug控制臺(tái)看響應(yīng)的結(jié)果則更方便
$(document)
.ready(
function(){
//${ctx}是目錄的路徑
$.getJSON("${ctx}/management/json!fileType.action",function(data){
$.each(data.typeList,function(i,item){
$("#typeId").append("<optionvalue="+item.id+">"+item.name+"</option>");
});
});