错误:
java.lang.NoSuchMethodException: com.product.impl.StandardServiceImpl.getTargetSource()
at java.lang.Class.getMethod(Class.java:1605) [na:1.6.0_13]
at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:192) [jsonplugin-0.34.jar:na]
at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:161) [jsonplugin-0.34.jar:na]
at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:127) [jsonplugin-0.34.jar:na]
at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:324) [jsonplugin-0.34.jar:na]
at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:225) [jsonplugin-0.34.jar:na]
at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:161) [jsonplugin-0.34.jar:na]
at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:127) [jsonplugin-0.34.jar:na]
at com.googlecode.jsonplugin.JSONWriter.write(JSONWriter.java:95) [jsonplugin-0.34.jar:na]
at com.googlecode.jsonplugin.JSONUtil.serialize(JSONUtil.java:98) [jsonplugin-0.34.jar:na]
at com.googlecode.jsonplugin.JSONResult.execute(JSONResult.java:179) [jsonplugin-0.34.jar:na]
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:361) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249) [xwork-2.1.2.jar:na]
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) [struts2-core-2.1.6.jar:na]
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) [xwork-2.1.2.jar:na]
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93) [struts2-core-2.1.6.jar:na]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) [xwork-2.1.2.jar:na]
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235) [struts2-core-2.1.6.jar:na]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) [xwork-2.1.2.jar:na]
at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104) [struts2-core-2.1.6.jar:na]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) [xwork-2.1.2.jar:na]
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267) [struts2-core-2.1.6.jar:na]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) [xwork-2.1.2.jar:na]
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) [struts2-core-2.1.6.jar:na]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176) [xwork-2.1.2.jar:na]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) [xwork-2.1.2.jar:na]
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) [struts2-core-2.1.6.jar:na]
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468) [struts2-core-2.1.6.jar:na]
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) [struts2-core-2.1.6.jar:na]
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:76) [struts2-core-2.1.6.jar:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:6.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:6.0.30]
at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:112) [spring-2.5.6.jar:2.5.6]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) [spring-2.5.6.jar:2.5.6]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:6.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:6.0.30]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96) [spring-2.5.6.jar:2.5.6]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) [spring-2.5.6.jar:2.5.6]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:6.0.30]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:6.0.30]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) [catalina.jar:6.0.30]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) [catalina.jar:6.0.30]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) [catalina.jar:6.0.30]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [catalina.jar:6.0.30]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [catalina.jar:6.0.30]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) [catalina.jar:6.0.30]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) [tomcat-coyote.jar:6.0.30]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) [tomcat-coyote.jar:6.0.30]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) [tomcat-coyote.jar:6.0.30]
at java.lang.Thread.run(Thread.java:619) [na:1.6.0_13]
代码:
package action.product;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.springframework.stereotype.Controller;
import com.chenyuantai.bean.QueryResult;
import com.chenyuantai.bean.product.Standard;
import com.chenyuantai.service.product.StandardService;
import com.googlecode.jsonplugin.annotations.JSON;
import com.opensymphony.xwork2.ActionSupport;
@Namespace("/product")
@Results( {
@Result(name = "sss", type = "freemarker", location = "/WEB-INF/Templetes/share/success.html", params = {})
})
@Controller
public class StandardAction extends ActionSupport implements ServletRequestAware{
private static final long serialVersionUID = -6110824496867129306L;
@Resource(name="standardServiceImpl")
private StandardService standardService;
private QueryResult<Standard> queryresult;
private List<Standard> standardList;
private int total;
private List<Object> rows;
private Integer[] ids;
private Integer id;
private HttpServletRequest request;
private Standard standard;
/** init standard page*/
public String standardlist(){
return "standardlist";
}
/** save standard page*/
public String addUI(){
return "addUI";
}
/** add standard func*/
public String add(){
standardService.save(standard);
return "sss";
}
/** return json data list*/
public String standardListdata(){
int pageNo = Integer.parseInt(request.getParameter("page"));
int pageSize = Integer.parseInt(request.getParameter("rows"));
int begin = (pageNo-1)*pageSize;
queryresult = standardService.getScrollData(begin,pageSize);
this.total = (int)queryresult.getTotalrecord();
standardList=queryresult.getResultlist();
this.rows = getRows(standardList);
return SUCCESS;
}
/**device json data*/
public List<Object> getRows(List<Standard> listStu){
List<Object> rows = new ArrayList<Object>();
for(Standard stu : listStu){
Map<String,Object> map = new HashMap<String,Object>();
map.put("standid", stu.getStandid());
map.put("name", stu.getName());
map.put("remark", stu.getRemark());
if(stu.getVisible()){
map.put("visible", "Yes");
}else{
map.put("visible", "No");
}
rows.add(map);
}
return rows;
}
@JSON(serialize=false)
public StandardService getStandardService() {
return standardService;
}
public void setStandardService(StandardService standardService) {
this.standardService = standardService;
}
public QueryResult<Standard> getQueryresult() {
return queryresult;
}
public void setQueryresult(QueryResult<Standard> queryresult) {
this.queryresult = queryresult;
}
public List<Standard> getStandardList() {
return standardList;
}
public void setStandardList(List<Standard> standardList) {
this.standardList = standardList;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public List<Object> getRows() {
return rows;
}
public void setRows(List<Object> rows) {
this.rows = rows;
}
public Integer[] getIds() {
return ids;
}
public void setIds(Integer[] ids) {
this.ids = ids;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Standard getStandard() {
return standard;
}
public void setStandard(Standard standard) {
this.standard = standard;
}
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
}
strut2在配置文件中配置
<action name="standardListdata" class="action.StandardAction" method="standardListdata">
<result type="json"/>
</action>
当页面ajax请求数据返回成功,但就是会报NoSuchMethod:getTargetSource(),报错原因由于action和service都是采用spring申明式注入,所以json在请求的过程会把注入的getxxxxservice方法也序列化,照成错误的产生。
修改报错:
@JSON(serialize=false)
public StandardService getStandardService() {
return standardService;
}
问题解决。