struts2 json jpa spring 报NoSuchMethodException getTargetSource()错误

来源:互联网 发布:北大青鸟java课程表 编辑:程序博客网 时间:2024/06/07 10:12

错误:

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;

}

问题解决。

原创粉丝点击