Как вызвать несколько действий из одной формы в Strutus 1? - PullRequest
0 голосов
/ 25 февраля 2020

Нужно вызвать несколько действий, от одного 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, пожалуйста, совет

1 Ответ

0 голосов
/ 26 февраля 2020

Ты не. Это не то, как работают веб-браузеры.

Если вы начнете отправку формы, а затем отойдете от страницы, конечный результат будет несколько неопределенным; отправка может начаться, а может и не начаться.

Это больше похоже на проблему XY: какой конечный результат вы на самом деле получите?

Если вам просто нужно выполнить обработку этапы нескольких действий при отправке формы, тогда логика c должна быть извлечена из действий (что уже должно быть так, как это делается), и вы создаете новую конечную точку (если вам все еще нужны оригиналы), которая вызывает лог c каждого из двух текущих действий.

В показанном (грязном!) фрагменте кода вы не вызываете два действия, вы вызываете одно из двух действий в зависимости от того, есть ли идентификатор эпизода, поэтому непонятно, о чем вы даже спрашиваете.

Не имеет отношения: вы слишком много толкаете логики c в слой представления, и код показывает, что вы уже пострадали из-за этого. Будет только хуже. Также ясно, что это устаревшая система, как из используемой платформы, так и из соглашений стиля / именования.

Вы начинаете путь к печали. Вам лучше будет разбить JSP для извлечения бизнес-логики c, использовать разные JSP (и фрагменты или шаблоны), чтобы разбить различные варианты использования, и начать добавлять конечные точки API / JSON на серверную часть и использовать Ajax как минимум или начните вводить компоненты (React, Vue, что угодно).

...