当数据存在时,jQuery 网格会导致 struts2 中的"Could not find action or result"



我正在有效项目,但是在升级Java,Tomcat和很少的库之后,Inner jQuery-Grid之一停止工作。(是的,外部一个" jsonpatientAppointments"仍在起作用)如果在这种情况下没有数据,则没有丢弃任何错误,但是如果在这种情况下存在数据,则struts2 Action正在投掷"无法找到动作或结果"。

我的动作课是

   @ParentPackage(value = "patient")
 public class JsonAppointmentHistoryAction extends ActionSupport implements 
 SessionAware
{
private static final long   serialVersionUID    = 5078263227068533593L;
private static final Logger log = Logger.getLogger(JsonAppointmentHistoryAction.class);
private List<PatientAppointmentBkp>      gridModel;
private List<PatientAppointmentBkp>      refPatientAppointments;
private Integer             rows             = 0;
private Integer             page             = 0;
private Integer             total            = 0;
private Integer             record           = 0;
private String              sord;
private String              sidx;
private String              searchField;
private String              searchString;
private String              searchOper;
private boolean             loadonce         = false;
private Map<String, Object> session;
private int appointmentNo;

private int id;
    @Actions({
      @Action(value = "/jsonAppointmentHistory", results = {
    @Result(name = "success", type = "json")
      })
    })
    public String execute(){
          log.warn("Page " + getPage()+" Rows " + getRows() +" Sorting Order "+ getSord()+" Index Row :" + getSidx());
        log.warn("Search :" + searchField + " " + searchOper + " " + searchString);
          log.debug("Build new List");
          refPatientAppointments = getAppointmentHisotoryList();
setRecord(PatientAppointmentHisDao.getPatientAppointmentHisCount(refPatientAppointments));
        int to = (getRows() * getPage());
        int from = to - getRows();
        to=to-1;
        if (to > getRecord()) to = getRecord();
        log.warn("from ==="+from +"  to====="+to);
        if (loadonce)
        {
          setGridModel(refPatientAppointments);
        }
        else
        {
            setGridModel(PatientAppointmentHisDao.getPatientAppointmentHis(refPatientAppointments, from, to));
        }
        setTotal((int) Math.ceil((double) getRecord() / (double) getRows()));

        return SUCCESS;
    }
    public List<PatientAppointmentBkp> getRefPatientAppointments() {
        return refPatientAppointments;
    }
    public void setRefPatientAppointments(
            List<PatientAppointmentBkp> refPatientAppointments) {
        this.refPatientAppointments = refPatientAppointments;
    }
    public String getJSON()
      {
        return execute();
      }
      /**
       * @return how many rows we want to have into the grid
       */
      public Integer getRows()
      {
        return rows;
      }
      /**
       * @param rows
       *          how many rows we want to have into the grid
       */
      public void setRows(Integer rows)
      {
        this.rows = rows;
      }
      /**
       * @return current page of the query
       */
      public Integer getPage()
      {
        return page;
      }
      /**
       * @param page
       *          current page of the query
       */
      public void setPage(Integer page)
      {
        this.page = page;
      }
      /**
       * @return total pages for the query
       */
      public Integer getTotal()
      {
        return total;
      }
      /**
       * @param total
       *          total pages for the query
       */
      public void setTotal(Integer total)
      {
        this.total = total;
      }
      /**
       * @return total number of records for the query. e.g. select count(*) from
       *         table
       */
      public Integer getRecord()
      {
        return record;
      }
      /**
       * @param record
       *          total number of records for the query. e.g. select count(*) from
       *          table
       */
      public void setRecord(Integer record)
      {
        this.record = record;
        if (this.record > 0 && this.rows > 0)
        {
          this.total = (int) Math.ceil((double) this.record / (double) this.rows);
        }
        else
        {
          this.total = 0;
        }
      }
      /**
       * @return an collection that contains the actual data
       */
      public List<PatientAppointmentBkp> getGridModel()
      {
        return gridModel;
      }
      /**
       * @param gridModel
       *          an collection that contains the actual data
       */
      public void setGridModel(List<PatientAppointmentBkp> gridModel)
      {
        this.gridModel = gridModel;
      }
      /**
       * @return sorting order
       */
      public String getSord()
      {
        return sord;
      }
      /**
       * @param sord
       *          sorting order
       */
      public void setSord(String sord)
      {
        this.sord = sord;
      }
      /**
       * @return get index row - i.e. user click to sort.
       */
      public String getSidx()
      {
        return sidx;
      }
      /**
       * @param sidx
       *          get index row - i.e. user click to sort.
       */
      public void setSidx(String sidx)
      {
        this.sidx = sidx;
      }
      public void setSearchField(String searchField)
      {
        this.searchField = searchField;
      }
      public void setSearchString(String searchString)
      {
        this.searchString = searchString;
      }
      public void setSearchOper(String searchOper)
      {
        this.searchOper = searchOper;
      }
      public void setLoadonce(boolean loadonce)
      {
        this.loadonce = loadonce;
      }
      public void setSession(Map<String, Object> session)
      {
        this.session = session;
      }

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public int getAppointmentNo() {
        return appointmentNo;
    }
    public void setAppointmentNo(int appointmentNo) {
        this.appointmentNo = appointmentNo;
    }
    private List<PatientAppointmentBkp> getAppointmentHisotoryList(){
        List<PatientAppointment> refAppRecords = new ArrayList<PatientAppointment>();
        PatientAppointment app = new PatientAppointment();
        if (refPatientAppointments == null){
            refPatientAppointments = new ArrayList<PatientAppointmentBkp>();
        }
        Object list = session.get("myApplist");
        int myPage = (int) session.get("myAppPage");
        int myRows = (int) session.get("myAppRows");
        if (list != null)
        {
            refAppRecords = (List<PatientAppointment>) list;
            app = refAppRecords.get(((myRows*(myPage-1))+id)-1);
        }
        refPatientAppointments = PatientAppointmentHisDao.buildAppList(app.getAppointNo());
        return refPatientAppointments;
    }
    public String getSearchField() {
        return searchField;
    }
    public String getSearchString() {
        return searchString;
    }
    public String getSearchOper() {
        return searchOper;
    }
    public boolean isLoadonce() {
        return loadonce;
    }

}

JSP代码

<%@ taglib uri="/struts-tags" prefix="s" %>
<%@ taglib uri="/struts-jquery-tags" prefix="sj" %>
<%@ taglib prefix="sjg" uri="/struts-jquery-grid-tags"%>
<link href="/HospitalCare/css/style.css" rel="stylesheet" type="text/css">
<link href="/HospitalCare/css/menu.css" rel="stylesheet" type="text/css">
<div align="center">
<s:url id="remoteurl" action="jsonPatientAppointments">
<s:param name="patientId" value="%{patientId}"></s:param>
</s:url>
<s:url id="appointdetailsurl" action="jsonAppointmentHistory" />
<s:url id="editurl" action="edit-grid-entry"/>
<sjg:grid
    id="appointmentNo"
    caption="Appointment Records"
    dataType="json"
    href="%{remoteurl}"
    pager="true"
    gridModel="gridModel"
    navigatorView="true"
    rowList="10,15,20"
    rowNum="15"
    rownumbers="true"
    viewrecords="true"
>
<sjg:grid 
        id="orderssubgridtable" 
        subGridUrl="%{appointdetailsurl}"
        gridModel="gridModel"
        rowNum="15"
        dataType="json"
        pager="true"
        navigatorView="true"
        rowList="10,15,20"
        footerrow="true"
        rownumbers="true"
        viewrecords="true"
    >
        <sjg:gridColumn name="appointmentDate" index="appointmentDate" 
  width="200" formatter="date" formatoptions="{newformat : 'd/m/Y H:i', 
 srcformat : 'Y-m-d H:i:s'}" title="Appintment Date" editable="false" 
 edittype="text" sortable="true" search="false"/>
        <sjg:gridColumn name="status" index="status" title="Status" 
 sortable="false" hidden="false"/>
        <sjg:gridColumn name="createDate" index="createDate" width="200" 
 formatoptions="{newformat : 'd/m/Y H:i', srcformat : 'Y-m-d H:i:s'}"  
 formatter="date" title="Scheduled On"  search="false" sortable="false" 
 hidden="false"/>
        <sjg:gridColumn name="modifyDate" index="modifyDate" width="200" 
 formatoptions="{newformat : 'd/m/Y H:i', srcformat : 'Y-m-d H:i:s'}" 
 formatter="date" title="Rescheduled On"  search="false" sortable="false" 
 hidden="false"/>
    </sjg:grid>
    <sjg:gridColumn name="appointmentDate" index="appointmentDate" 
   width="200" formatter="date" formatoptions="{newformat : 'd/m/Y H:i', 
  srcformat : 'Y-m-d H:i:s'}" title="Appintment Date" editable="false" 
  edittype="text" sortable="true" search="false"/>
    <sjg:gridColumn name="status" index="status" title="Status" 
  sortable="false" hidden="false"/>
    <sjg:gridColumn name="createDate" index="createDate" width="200" 
 formatoptions="{newformat : 'd/m/Y H:i', srcformat : 'Y-m-d H:i:s'}"  
    formatter="date" title="Scheduled On"  search="false" sortable="false" 
 hidden="false"/>
    <sjg:gridColumn name="modifyDate" index="modifyDate" width="200" 
   formatoptions="{newformat : 'd/m/Y H:i', srcformat : 'Y-m-d H:i:s'}" 
 formatter="date" title="Rescheduled On"  search="false" sortable="false" 
 hidden="false"/>
 </sjg:grid>
   <br/>
</div>

它在错误以下投掷 08:45:57,475 WARN调度员:64-找不到行动或结果:/hospitalcare/patient/jsonappointmenthistory.action?id = 1&amp; amp; pamp;; sidx =&amp; sord = asc&amp; = 1504494947623 没有针对acto org.arshiya.struts.action.patient.jsonappointmenthistoration和结果异常定义的结果 在com.opensymphony.xwork2.defaultActionInvocation.executeresult(DefaultActionInvocation.java:373) 在com.opensymphony.xwork2.defaultActionInvocation.invoke(DefaultActionInvocation.java:275) 在org.arshiya.hibernate.util.sessioncheck.intercept(sessioncheck.java:34) 在com.opensymphony.xwork2.defaultActionInvocation.Invoke(DefaultActionInvocation.java:246) atrg.apache.struts2.impl.strutsactionproxy.execute(strutsactionproxy.java:54) atorg.apache.struts2.dispatcher.dispatcher.serviceaction(dispatcher.java:562) atrg.apache.struts2.dispatcher.ng.executeoperations.executeaction(executeOperations.java:77) atorg.apache.struts2.dispatcher.ng.filter.strutspreepreandexecutefilter.dofilter(strutsprepareandexecutefilter.java:99) at rog.apache.catalina.core.applicationfilterchain.internaldofilter(ApplicationFilterChain.Java:241) at org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208) atorg.apache.catalina.core.candardwrappervalve.invoke(standardwrappervalve.java:219) at rog.apache.catalina.core.standardcontextvalve.invoke(standardContextvalve.java:110) at rog.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:506) at org.apache.catalina.core.standardhostvalve.invoke(StandardHostvalve.java:169) at org.apache.catalina.valves.erroreportvalve.invoke(errorreeportvalve.java:103) atrg.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:962) at org.apache.catalina.core.candardenginevalve.invoke(standardenginevalve.java:116) atorg.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:445) at rog.apache.coyote.http11.abstracthtp11processor.process(apptracthttp11processor.java:1115) at org.apache.coyote.abstractprotocol $ AbstractConnectionHandler.Process(Abstract Protocol.java:637) atorg.apache.tomcat.util.net.jioendpoint $ socketProcessor.run(jioendpoint.java:318) 在java.util.concurrent.threadpoolexecutor.runworker(未知来源) 在java.util.concurrent.threadpoolexecutor $ worker.run(未知来源) atrg.apache.tomcat.util.threads.taskthread $ wrappingrunnable.run(taskthread.java:61) 在java.lang.thread.run(未知来源)

根据

没有定义用于动作和结果异常的结果

我认为您的执行方法会引发一些异常。我可以推荐Struts全球异常处理以查看会发生什么。

相关内容

最新更新