形式用SpringMVC:选择项目属性:究竟是什么期待它?(SpringMVC form:optio

2019-08-17 19:10发布

我仍然对新用SpringMVC(和JSTL为此事)。 我试图从对象列表填充在选择选项。 我已经找到一种方法用c做到这一点:的forEach,但我一直在想,必须有一种方法,使形式:选择方法的工作。

我浏览四周,大约是最接近我能找到官方文档上的项目属性是这里>> http://static.springsource.org/spring/docs/2.0.x/reference/spring-form.tld的.html#弹簧form.tld.options

它说,该项目属性是

“收集,地图或用于生成内‘选项’标签对象数组”

我的困惑是什么样的采集,地图,或在寻找对象的数组。 他们需要哪些格式是? 难道找String类型专门的集合或数组? 我可以用吗

List<MyObject>

如果是的话,你会为MyObject必须有它,以便这是有效的(即方法,变量)?

目前,当我尝试使用MyObject来,我得到说,一个例外 -

ConverterNotFoundException:没有找到转换器能够从类型com.example.MyObject转换为java.lang.String类型

我需要做一个转换器? 哪里会说去? 如何将这项工作? 我GOOGLE了该错误消息,并没有真正打开了具体的什么什么,我试图做...(大部分是结果约小豆)

在为MyObject类看起来是这样的:

public class MyObject{
    private String company;
    private Customer customer;
    private Address customerAddress;

    public String getCompany() {
        return company;
    }

    public void setCompany(String company) {
        this.company = company;
    }

    public Customer getCustomer() {
        return customer;
    }

    public void setCustomer(Customer customer) {
        this.customer = customer;
    }

    public Address getCustomerAddress() {
        return customerAddress;
    }

    public void setCustomerAddress(Address customerAddress) {
        this.customerAddress = customerAddress;
    }
}

我试图用它作为这样的:

<form:select path="myObjectList">
    <form:option value="0"/>
    <form:options items="myObjectList" /> 
</form:select>

有谁知道具体是什么不正确有关此方法? 或者,我应该使用

List<String> 

完成我在做什么?

这里编辑的堆栈跟踪>> http://pastebin.com/2c5XBCmG

Answer 1:

在Spring文档说这对items属性的form:options标签:

项目属性典型地填充了一个集合或项目对象数组。 项目值和itemLabel简单地指的是那些项目对象的bean属性,如果指定的话; 否则,该项目对象本身将字符串化。 或者,你可以指定地图项目,在这种情况下映射键被解释为选项值和映射值对应选项标签。 如果项目值和/或itemLabel碰巧也规定,该项目价值属性将应用到地图的钥匙,并在项目标签属性将应用到地图的价值。

简而言之,如果您需要使用您的自定义Bean的列表作为项目属性,你还需要使用itemValueitemLabel属性。 就个人而言,我会更喜欢使用地图- LinkedHashMap情况下speciffically-用于填充我的选择标记,但是这是口味的问题。

从Spring文档适应一个例子,你的代码应该是这样的:

 <form:select path="commandAttribute">
      <form:option value="-" label="--Please Select"/>
      <form:options items="${countryList}" itemValue="company" itemLabel="company"/>
 </form:select>

我使用的是company属性既是itemValueitemLabel ,但你可以自由地选择适合您的需求的属性。



Answer 2:

Usualy我与像今年春天标签做:

<springform:select path="myObjectList" id="selected_company">
    <springform:option value="0" label="--- Select One ---"></springform:option>
    <springform:options items="${myObjectList}" itemValue="company" itemLabel="company"></springform:options>
</springform:select>

不要忘了包括命名空间声明:的xmlns:弹簧扣=“http://www.springframework.org/tags/form”



文章来源: SpringMVC form:options items attribute: what exactly is it expecting?