在使用struts2時(shí)候發(fā)現(xiàn)一個(gè)問題。<package name="promotion-json" namespace="/" extends="json-default">
如果這個(gè)package繼承了json-default的時(shí)候。如果在頁(yè)面發(fā)送ajax請(qǐng)求的時(shí)候。在action中如果有多個(gè)方法的時(shí)候。會(huì)莫名其妙的發(fā)送了兩個(gè)請(qǐng)求出來(lái)。一個(gè)是正常的。一個(gè)是空的。會(huì)造成錯(cuò)誤。后來(lái)發(fā)現(xiàn)原因是這樣的。
struts2 中JSON的原理是在ACTION中的get方法都會(huì)序列化,所以前面是get的方法只要沒指定不序列化,都會(huì)執(zhí)行。
也就是說(shuō)。如果方法名稱是get開頭的。那么久會(huì)序列化然后被執(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{...}