Javascript 如何在Strutus 1中从单个窗体调用多个操作?
需要从单个JSP调用多个操作。我尝试了几种方法,但并不符合标准,请帮助我在不使用ajax的情况下调用多个操作Javascript 如何在Strutus 1中从单个窗体调用多个操作?,javascript,jsp,struts-1,Javascript,Jsp,Struts 1,需要从单个JSP调用多个操作。我尝试了几种方法,但并不符合标准,请帮助我在不使用ajax的情况下调用多个操作 <html:form action="inspathNew" name="personInsuranceForm" method="post" scope="request"> <a id="addPatientButton" class="ovalbutton" href="javascript:void(0);"> <span>
<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;
<% }%>
}
函数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 epiodeid=document.forms[0].epiodeidval.value;
var epiCntVal=document.forms[0].epiCntVal.value;
var epirn=document.forms[0].epirn.value;
var batchScanStatus=document.forms[0]。batchScanStatus.value;
//臭虫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
0) {%>
//从emrEpisode detail创建新人员的步骤
window.location.href=“/action/personInfoNew?action=&=“++”&=“+document.forms[0]['jobId'].value+”&patFirstName=“+patFirstName+”&patLastName=“+patLastName+”&patSSN=“+patSSN;
var url=“/action/personinfo new?action=newPatient&epiodeid=&name=&patientId=&jobId=“+jobIdVal+”&batchId=“+batchCode+”&batchCode=“+batchCode+”&batchCount=“+batchCount+”&epiCount=“+epiMode+”&epiodeidval=“+epiodeid+”&epicontval=“+epiCntVal;”;
//错误#2598-仅查看个人信息
var viewMode=“=”;
if(${showPageEditableMode}){
viewMode=“=”;
}
window.location.href=“/action/personinfo新?”+viewMode+”&action=newPatient&epiodeid=&name=&patientId=&jobId=“+jobIdVal+”&batchId=“+batchId+”&batchCode=“+batchCode+”&batchCount=“+batchCount+”&epiodecount=“+epiodenum+”&docNum=“+docNum+”&entryDate=“+entryDate+”&admitDate=“+admitDate=+admitDate+”&epiMode=“+disDate+”&epiodeval=+epiodemode+”&epiodeval=“+epioded+”+“&epiCntVal=“+epiCntVal+”&batchScanStatus=“+batchScanStatus+”&epirn=“+epirn+”&patFirstName=“+patFirstName+”&patLastName=“+patLastName+”&patSSN=“+patSSN+”&mrnValue=“+PatMrn;
}
以及如何使用windows.href调用另一个操作
注意:参数应该通过URL传递,请建议不要这样做。web浏览器不是这样工作的 如果开始表单提交,然后离开页面,最终结果有些不确定;提交可能已经开始,也可能没有 这听起来更像是一个XY问题:你真正想要的最终结果是什么 如果您只需要在表单提交上运行多个操作的处理步骤,那么应该从操作中提取该逻辑(应该已经是这样做的),并创建一个新端点(如果您仍然需要原始端点),该端点调用当前两个操作的逻辑 在显示的(凌乱的!)代码片段中,您并没有调用两个操作,而是根据是否有插曲ID调用两个操作中的一个,所以甚至不清楚您在问什么 无关:您在视图层中强加了太多的逻辑,代码表明您已经因此受到了影响。这只会变得更糟。从使用的框架和代码样式/命名约定来看,这显然是一个遗留系统
您开始感到悲伤。您最好拆分JSP以提取业务逻辑,使用不同的JSP(以及片段或模板)来拆分各种用例,并开始在后端添加API/JSON端点,至少使用Ajax,或者开始引入组件(React、Vue等).我的问题是如何调用href而不在url@user2302158您要么提交表单,要么提出Ajax请求——这是一个浏览器,您没有很多其他选项。