[英]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.