Javascript Jsp+JS+DBLookup+内部条件,解决方案?

Javascript Jsp+JS+DBLookup+内部条件,解决方案?,javascript,jsp,jsp-tags,Javascript,Jsp,Jsp Tags,这里我有两个标签查询,我想在JSP中调用它们,在一个文本列表中,如果基于列表中先前选择的项目,那么条件是,下面是我的代码: 首先是JS函数: <script language="javascript"> var basevalue; function checkoutlet(id) { basevalue= document.getElementsById(id).value; return basevalue; } </script

这里我有两个标签查询,我想在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>

对不起,代码有点乱!我需要一些帮助来解决这个问题,提前谢谢:

以下是感兴趣的人的解决方案:

第一部分:

function checkoutlet()
{
document.forms[0].action = "populate_spotter_instant.do";
document.forms[0].submit();

} 
populate\u spotter\u instant是一种帮助应用chages instantle的服务,它意味着只需在表单中写入,struts表单将保存新值,在服务文件中,这里是服务,其逻辑是从当前表单中获取值,然后保存到对象中,类似于以下内容:

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来实例化表单并使用其属性,因为我已经保存了当前表单的值,并在基本Dorp down输入中调用了JS方法,因此,当我更改基本值时,所有表单值都将重新填充,然后我的门店将有权访问新的基本值,并在此基础上,它将通过引用这些查询标签的适当查询:

<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>

就这样,一切都完成了,如果没有足够的细节让我知道,它对我来说是完美的

进一步澄清;当我选择一个基本项时,outlet列表直接生效并调用合适的查询lookupName,因此在我的情况下,如果基本项是Branch,它将调用lookupName=common.spotter.outletb,否则如果lookupName=common.spotter.outletd,将调用,否则,如果基为“其他”,则不会调用任何查询,因此,根据结果,出口代码列表将为空无选项,这就是我想要的senario!我希望有人能帮我,这是紧急情况!谢谢。那么,目前出口代码的输出是什么?出口选择列表的当前输出是两个查询组合在一起的结果!!这个输出是相同的,如果我选择其他基本选项,它不会改变!!