簡體   English   中英

如何從 Strutus 1 中的單個表單調用多個操作?

[英]how to call multiple action from a single form in Strutus 1?

需要從單個 JSP 調用多個操作。 我嘗試了幾種方法,但不是每個標准,請幫助我在不使用 ajax 的情況下調用多個操作。

<html:form action="inspathNew" name="personInsuranceForm" method="post" scope="request">
    <a id="addPatientButton" class="ovalbutton" href="javascript:void(0);"> 
      <span>
          <html:button property="addPatient" onclick="javascript:AddPatient();" /> 
     </span>
    </a> 
  </html>

function AddPatient() {
    var jobIdVal = document.forms[0].jobId.value;
    var batchId = document.forms[0].batchId.value;
    var batchCode = document.forms[0].batchCode.value;
    var batchCount = document.forms[0].batchCount.value;
    var epiCount = document.forms[0].epiCount.value;
    var docNum = document.forms[0].docNum.value;
    var entryDate = document.forms[0].entryDate.value;
    var admitDate = document.forms[0].admitDate.value;
    var disDate = document.forms[0].disDate.value;
    var epiMode = document.forms[0].epiMode.value;
    var episodeId = document.forms[0].episodeIdVal.value;
    var epiCntVal = document.forms[0].epiCntVal.value;
    var epiDRN = document.forms[0].epiDRN.value;
    var batchScanStatus = document.forms[0].batchScanStatus.value;
    // bug #1569
    var patLastName = document.forms[0].plname.value.toUpperCase();
    var patFirstName = document.forms[0].pfname.value.toUpperCase();
    var patSSN = document.forms[0].pssn.value;
    var PatMrn = document.forms[0].mrn.value;
    //bug 2304 c#90
<%  String emrEpisodeId = request.getParameter("emrEpisodeId");
    if (emrEpisodeId != null && emrEpisodeId.length() > 0) {%>
        // to create new person from emrEpisode detail
        window.location.href = "<%=request.getContextPath()%>/action/personInfoNew?action=<%=com.abc.dataentry.person.action.PersonAction.ACTION_CREATE_PERSON_FROM_EMR%>&<%=com.abc.dataentry.person.action.PersonAction.PARAM_EMR_EPISODE_ID%>=" + <%=emrEpisodeId%> + "&<%=com.abc.dataentry.person.action.PersonAction.PARAM_JOB_ID%>="+ document.forms[0]['jobId'].value+"&patFirstName="+patFirstName+"&patLastName="+patLastName+"&patSSN="+patSSN;
<%  } else {%> 
        var url = "<%=request.getContextPath()%>/action/personInfoNew?action=newPatient&episodeId=<%=request.getParameter("episodeId")%>&name=<%=request.getParameter("name")%>&patientId=<%=request.getParameter("patientId")%>&jobId="+jobIdVal+"&batchId="+batchId+"&batchCode="+batchCode+"&batchCount="+batchCount+"&epiCount="+epiCount+"&epiMode="+epiMode+"&episodeIdVal="+episodeId+"&epiCntVal="+epiCntVal;
        //bug # 2598 - view only person info
        var viewMode = "<%=IConstants.PARAM_VIEWMODE%>=<%=IConstants.MODE_VIEWONLY%>";
        if(${showPageEditableMode}){
            viewMode = "<%=IConstants.PARAM_VIEWMODE%>=<%=IConstants.MODE_EDITABLE%>";
        }
        window.location.href="<%=request.getContextPath()%>/action/personInfoNew?"+viewMode+"&action=newPatient&episodeId=<%=request.getParameter("episodeId")%>&name=<%=request.getParameter("name")%>&patientId=<%=request.getParameter("patientId")%>&jobId="+jobIdVal+"&batchId="+batchId+"&batchCode="+batchCode+"&batchCount="+batchCount+"&epiCount="+epiCount+"&docNum="+docNum+"&entryDate="+entryDate+"&admitDate="+admitDate+"&disDate="+disDate+"&epiMode="+epiMode+"&episodeIdVal="+episodeId+"&epiCntVal="+epiCntVal+"&batchScanStatus="+batchScanStatus+"&epiDRN="+epiDRN+"&patFirstName="+patFirstName+"&patLastName="+patLastName+"&patSSN="+patSSN+"&mrnValue="+PatMrn;
<%  }%>
}

還有如何使用 windows.href 調用另一個動作

注意:參數應通過 URL 傳遞,請指教

你沒有。 這不是網絡瀏覽器的工作方式。

如果您開始提交表單然后離開頁面,則最終結果有些不確定; 提交可能已經開始,也可能沒有。

這聽起來更像是一個 XY 問題:你真正想要的最終結果是什么?

如果您只需要在表單提交上運行多個操作的處理步驟,那么應該從操作中提取該邏輯(這應該已經是如何完成的),然后創建一個新端點(如果您仍然需要原始端點)調用兩個當前操作中的每一個的邏輯。

在顯示的(凌亂!)代碼片段中,您沒有調用兩個操作,而是根據是否存在劇集 ID 調用兩個操作之一,因此您甚至不清楚您在問什么。

無關:您將太多邏輯推入視圖層,代碼顯示您已經因此而受苦。 它只會變得更糟。 從使用的框架和代碼樣式/命名約定來看,這也是一個遺留系統。

你開始走上悲傷的道路。 通過拆分 JSP 來提取業務邏輯,使用不同的 JSP(和片段或模板)來拆分各種用例,並開始在后端添加 API/JSON 端點並至少使用 Ajax,您會得到更好的服務,或者開始引入組件(React、Vue 等)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM