在使用struts2時候發(fā)現(xiàn)一個問題。<package name="promotion-json" namespace="/" extends="json-default">
如果這個package繼承了json-default的時候。如果在頁面發(fā)送ajax請求的時候。在action中如果有多個方法的時候。會莫名其妙的發(fā)送了兩個請求出來。一個是正常的。一個是空的。會造成錯誤。后來發(fā)現(xiàn)原因是這樣的。
struts2 中JSON的原理是在ACTION中的get方法都會序列化,所以前面是get的方法只要沒指定不序列化,都會執(zhí)行。
也就是說。如果方法名稱是get開頭的。那么久會序列化然后被執(zhí)行。
于是解決方法就是:
1、Action中的業(yè)務(wù)方法前別加get 或者 set(屬性的get set 除外)
2、用@JSON(serialize=false)指定方法不序列化
E.G:
import com.googlecode.jsonplugin.annotations.JSON;
@JSON(serialize=false)
public String getSomething() throws Exception{...}