jsp下拉菜单无法自动选择正确的值

时间:2019-10-17 15:08:05

标签: java spring jsp

我在jsp页面上有一个自动填充的下拉列表。提交表单后,重新加载页面时,搜索结果将显示在下表中,并且所有下拉列表和其他字段条目都按提交前的样子重新填充。

除了这个值<option value="A"><spring:message code="code.label.ANE" /></option>。它不像其他人。它不是从数据库动态创建的,因为它基本上只是将多个结果汇总为一个结果,因此不是有效的数据库代码。其他人将正确地被重新选择,但不是这个。

我假设<option value="">${Select}</option>仅因为它的第一个值而起作用,因此默认为选中状态。不能实际测试它,因为该值不支持任何搜索。

不,我的值不能成为新的默认值,因为它不可能是唯一的自定义报告选项。

    <div class="col-md-4">
        <label>
            <spring:message code="common.label.lifeCycle" />
        </label>
        <form:select path="hrmsLifeCycleCode" id="hrmsLifeCycleCode" cssClass="form-control">
            <spring:message code="field.select" var="Select" />
            <option value="">${Select}</option>
            <option value="A"><spring:message code="code.label.ANE" /></option>
            <form:options items="${hrmsLifeCycle}" itemValue="codeValue" itemLabel="longDesc" />
        </form:select>
    </div>

2 个答案:

答案 0 :(得分:0)

在jsp中添加以下内容

    $(document).ready(function() {
        <c:if test="${querySelect == 'A'}">
            $("#hrmsLifeCycleCode").val('A'); 
        </c:if>
    });

在控制器中

    model.addAttribute("querySelect", hrmsLifeCycle.getHrmsLifeCycleCode());

由于控制器现在正在传递选定的值,因此当选定的值是这种未自动选择的情况时,它将在页面加载后选择它。

这不是最好的解决方案,但是有效。

答案 1 :(得分:0)

有一个更好的解决方案,不需要更改jsp。虽然最初的修复程序很少,但此修复程序更好,但涉及的程度稍多。

由于该控制器有两个部分,即正常页面和执行表单/搜索的一个部分,因此两个部分都需要更改。

所以产生该属性的原始语句是

   model.addAttribute("hrmsLifeCycle", GeneralCodeManager.getInstance().getList(GeneralCodeManager.LIFECYCLE_PROC_DESC_CTBL_HRMS_ONLY));

改为

    List<GeneralCode> something = new ArrayList<GeneralCode>(); 
    GeneralCode newCode = new GeneralCode(-1, STRING_NEW_REPORT_ID, "-1", "Report Name");
    something.add(newCode);
    List<GeneralCode> extraList = GeneralCodeManager.getInstance().getList(Report_ID);
    extraList.add(something);
    model.addAttribute("hrmsLifeCycle", extraList);

因此,以上内容为报告创建了一个新的列表元素,并将其添加。

这可以通过我一周或两周前学到的东西进一步改进,那就是在requestMapping之外的控制器中定义modelAttributes。

    @ModelAttribute("hrmsLifeCycle")
    List<GeneralCode> something = new ArrayList<GeneralCode>(); 
    GeneralCode newCode = new GeneralCode(-1, STRING_NEW_REPORT_ID, "-1", "Report Name");
    something.add(newCode);
    List<GeneralCode> extraList = GeneralCodeManager.getInstance().getList(Report_ID);
    extraList.add(something);

    return extraList;
    }

和访问将使用

    "${extraList}"

要真正改善它,更好的名字会有所帮助,大声笑。