[英]Jsp + JS + DBLookup + inside condition , solution?
在這里,我有2個標簽查詢,如果要基於列表中以前選擇的項目,也想在帶有條件的文本列表中的JSP中調用它們,這是我的代碼:首先是JS函數:
<script language="javascript">
var basevalue;
function checkoutlet(id)
{
basevalue= document.getElementsById(id).value;
return basevalue;
}
</script>
這是JSP部分:
<tr>
<td class="txtMF">Base<span class="txtnbmed"><span class="txtredsmall">*</span></span></td>
<td class="txtnbmed" Id="base">
<html:select property="spotterBase">
<option value="">-- Select --</option>
<dblookup:DBLookupTagVer2 lookUpName="common.spotter.base" />
</html:select>
</td>
</tr>
<tr>
<td class="txtMF">Outlet Code</td>
<td class="txtnbmed">
<html:select property="spotterOutlet" onchange="checkoutlet('<%=base%>');">
<option value="">-- Select --</option>
<script language="javascript">
if (basevalue.equals("Branch")){
</script>
<dblookup:DBLookupTagVer2 lookUpName="common.spotter.outletb" />
<script language="javascript">
} else if (basevalue.equals("Dealer")){
</script>
<dblookup:DBLookupTagVer2 lookUpName="common.spotter.outletd" />
<script language="javascript"> } </script>
</html:select>
</td>
</tr>
對不起,代碼有點亂! 我需要一些幫助來解決此問題,在此先感謝:)
這是有興趣的人的解決方案:
首先在JS部分:
function checkoutlet()
{
document.forms[0].action = "populate_spotter_instant.do";
document.forms[0].submit();
}
populate_spotter_instant是一項服務,可幫助立即應用chages,這意味着您只需在表單中編寫內容,struts表單將保存新值,在Service文件中是該服務,其邏輯是從當前表單中獲取值並保存,然后在對象中,類似於以下內容:
private ActionForward doPopulateSpotterInstant(
ActionMapping mapping,
SpotterSelectForm spotterForm,
SessionData sessionData)
throws Exception
{
log.debug("doPopulateSpotterInstant | Begin ");
SpotterRequestValueObject requestVo = new SpotterRequestValueObject();
String branchCode2 = getBranchCode(sessionData);
log.debug("doPopulateSpotterInstant | branchCode:" + branchCode2);
requestVo.setBranchCode(branchCode2);
String spotterCode = spotterForm.getSpotterCode();
log.debug("doPopulateSpotterInstant | spotterCode:" + spotterCode);
String companyCode = spotterForm.getCompanyCode();
log.debug("doPopulateSpotterInstant | companyCode:" + companyCode);
String createdBy = getUserID(sessionData);
log.debug("doPopulateSpotterInstant | createdBy:" + createdBy);
Timestamp createTimestamp = new Timestamp(System.currentTimeMillis());
log.debug("doPopulateSpotterInstant | createdTM:" + createTimestamp);
requestVo.setSpotterCode(spotterCode);
Gspotter gSpotter = new Gspotter();
GspotterPK pk = new GspotterPK();
pk.setSpCode(spotterCode);
pk.setComp_code(companyCode);
gSpotter.setComp_id(pk);
gSpotter.setName(spotterForm.getSpotterName());
gSpotter.setSpId(spotterForm.getSpotterId());
gSpotter.setBr_code(branchCode2);
gSpotter.setType(spotterForm.getSpotterType());
gSpotter.setBase(spotterForm.getSpotterBase());
gSpotter.setOutlet(spotterForm.getSpotterOutlet());
gSpotter.setDesignation(spotterForm.getDesignation());
gSpotter.setContact_no(spotterForm.getSpotterContactNo());
gSpotter.setAddr1(spotterForm.getSpotterAddress1());
gSpotter.setAddr2(spotterForm.getSpotterAddress2());
gSpotter.setAddr3(spotterForm.getSpotterAddress3());
gSpotter.setAddr4(spotterForm.getSpotterAddress4());
gSpotter.setPostcode(spotterForm.getSpotterPostCode());
gSpotter.setCreatedBy(createdBy);
gSpotter.setCreateTimestamp(createTimestamp);
requestVo.setSpotterObj(gSpotter);
log.debug("doPopulateSpotterInstant | End ");
return mapping.getInputForward();
}
好,現在在JSP部分:
<tr>
<td class="txtMF">Base<span class="txtnbmed"><span class="txtredsmall">*</span></span></td>
<td class="txtnbmed" id="base">
<html:select property="spotterBase" onchange="javascript:checkoutlet();">
<option value="">-- Select --</option>
<dblookup:DBLookupTagVer2 lookUpName="common.spotter.base" />
</html:select>
</td>
</tr>
<tr>
<td class="txtMF">Outlet Code</td>
<td class="txtnbmed">
<%
SpotterSelectForm form = (SpotterSelectForm)request.getAttribute("SpotterSelectForm");
if(form.getSpotterBase() == null){
%> <html:select property="spotterOutlet" disabled="true">
<option value="">-- Select --</option>
<dblookup:DBLookupTagVer2 lookUpName="common.spotter.outletd" >
</dblookup:DBLookupTagVer2>
</html:select>
<%
}else if(form.getSpotterBase() == 'B'){
%>
<html:select property="spotterOutlet">
<option value="">-- Select --</option>
<dblookup:DBLookupTagVer2 lookUpName="common.spotter.outletb" >
</dblookup:DBLookupTagVer2>
</html:select>
<%
}else if(form.getSpotterBase() == 'D'){
%>
<html:select property="spotterOutlet" >
<option value="">-- Select --</option>
<dblookup:DBLookupTagVer2 lookUpName="common.spotter.outletd" >
</dblookup:DBLookupTagVer2>
</html:select>
<%
}else {
%> <html:select property="spotterOutlet" disabled="true">
<option value="">-- Select --</option>
<dblookup:DBLookupTagVer2 lookUpName="common.spotter.outletd" >
</dblookup:DBLookupTagVer2>
</html:select>
<%
}
%>
</td>
</tr>
如您所見,我已經使用Scriplets實例化表單並使用其屬性,因為已經保存了當前表單的值並在Base Dorp down輸入中調用了JS方法,因此當我更改Base值時,所有表單值將為重新填充,然后我的商店將可以訪問新的Base值,並以此為基礎,將引用這些QueryTag的合適查詢無效:
<query cacheDuration="90000" cacheMaxRows="100" key="common.spotter.outletb" toCache="true">
<stmt>
<![CDATA[
SELECT BIBRCD, BIBRCD||'-'||BIBRNM from e31dlib3.GBRANCH where BIBRTY='B' AND BIRS='A'
]]>
</stmt>
</query>
<query cacheDuration="90000" cacheMaxRows="100" key="common.spotter.outletd" toCache="true">
<stmt>
<![CDATA[
SELECT BIBRCD, BIBRCD||'-'||BIBRNM from e31dlib3.GBRANCH where BIBRTY='D' AND BIRS='A'
]]>
</stmt>
</query>
僅此而已,一切就完成了,而且對我而言,它非常完美,即使我不知道足夠的細節!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.