如何使用SPring MVC在onChange上选择输入时显示对象的属性

时间:2013-05-02 18:00:15

标签: java spring jsp spring-mvc el

我正在使用Spring MVC。我正在尝试显示“Firm”对象列表。公司有不同的属性,包括公司名称,州,邮政编码等......

仅显示公司对象的代码(即内存中每个公司对象的字符串表示)是 **

<select name="issuingFirm" id="issuingFirm">
    <c:forEach var="entity" items="${candidateIsssuingFirmList}">
        <option value="${entity}">${entity}</option>
    </c:forEach>
</select>

**

在我的控制器中我已经拥有公司列表(List<Firm>

以下方法是一个实用程序方法,它获取公司列表并将它们放入映射中,以便我可以将它放在模型中以在我的jsp页面中显示它

public static Map getIssuingEntities(List<Firm> firmList) {          

    Map entityData = new HashMap();
    entityData.put("candidateIsssuingFirmList", firmList);

    return entityData;
}

在我的控制器(get方法)中,我使用以下代码调用上面的方法并将其放入模型中(模型是ModelMap的类型)

@RequestMapping(value = "...", method = RequestMethod.GET)
public ModelAndView getIssuerInformationPage(ModelMap model, HttpSession session) {

。 。 。

List<Firm> firmList = firmRepository.findGroupFirmsByFirm(getFirmOidFromMemberOid(getMemberOid(session)));
model.addAllAttributes(PrivateOfferPlacementUtil.getIssuingEntities(firmList));
...
.
.
}

此代码的问题是,它在jsp页面上只显示一串公司对象。  我需要的只是显示公司名称,然后当用户从列表中选择不同的公司名称时,我想在它下面显示状态,zip等等。我可以轻松地替换getIssuingEntities方法来返回公司名称列表而不是列表对象,但我最终只会有名字。我的问题是如何存储公司对象列表,当选择输入上有onChange时,我会调用公司对象上的方法并显示我想要的属性?

仅供参考:公司对象非常大但我需要的属性少于5个。是否可以使用javascript来存储firmObjects列表?如果选择输入上有OnChange,如何在不使用Ajax的情况下执行此操作。使用ajax,获取公司名称可能很容易,搜索该对象并获取我想要的属性。但我不想这样做。

我如何实现我想要实现的目标?

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用分隔符(例如Pipeline |)在您的选项中添加公司名称等值:

<select name="issuingFirm" id="issuingFirm">
    <c:forEach var="entity" items="${candidateIsssuingFirmList}">
        <option value="${entity.id}|${entity.name}">${entity}</option>
    </c:forEach>
</select>

然后,您可以添加Change事件以拆分该值并在html中的某处显示公司名称。