0

我正在使用 Spring 3.1.1.RELEASE。我有这个命令对象……</p>

@Entity
public class Contract {

    @Id
        @Column(name = "ID")
        @GeneratedValue(strategy=GenerationType.AUTO)
        private Integer id;

        @OneToOne(fetch = FetchType.EAGER, targetEntity = Product.class)
        @JoinColumn(name = "PRODUCT_ID")
        @NotNull
        private Product product;

        @Column(name = "ORDER_ID")
        @NotNull
        private String orderId;     
    …

我想要在我的 JSP 表单上拥有一个代表产品字段的产品下拉列表。一旦用户选择一个并提交表单,它将通过命令对象的 setProduct 方法填充对象的“产品”成员字段。我知道如何设置字符串字段,

<form:input path="orderId" />

但是我需要在我的控制器和 JSP 中放入什么,以便当我的请求提交给控制器时……</p>

@RequestMapping(value = "/add", method = RequestMethod.POST)
public ModelAndView addContract(final Contract contract,
                                final BindingResult result) {
…

产品字段将正确填充?

4

2 回答 2

0

尝试使用标签<form:select/>

<form:select path="name_attribute" items="${myobjs}" itemLabel="name" itemValue"number"/>

items 属性采用对象的集合。所以对于这个例子,假设 myObjs 是以下类的集合:

public class MyObj{
   private String name;
   private String number;
}

参考:http ://static.springsource.org/spring/docs/2.0.x/reference/spring-form.tld.html#spring-form.tld.select

参考2:http : //static.springsource.org/spring/docs/current/spring-framework-reference/html/view.html(见17.2.4.9节选择标签)

于 2012-10-15T15:56:36.860 回答
0

答案涉及的不仅仅是 JSP 选择标记。它还需要粘合剂。如果我有这门课

@Component
public class ProductEditor extends PropertyEditorSupport
{

    @Autowired
    private ProductService m_productSvc;

    @Override
    public String getAsText()
    {
        final Product product = (Product) getValue();
        final String text = (product != null ? product.getProductId() : "");
        return text;
    }

    @Override
    public void setAsText(final String id)
    {
        final Product product = m_productSvc.findById(id);
        setValue(product);
    }
}

我可以在我的控制器中注册活页夹……</p>

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        …
        binder.registerCustomEditor(Product.class, this.m_productEditor);
    }

然后在我的 JSP 中,我可以拥有

                <form:select path="product">
                    <form:option value="" label="Select" />
                    <form:options items="${productList}" itemValue="id" itemLabel="name" />
                </form:select>

我的选择将绑定到我的命令对象的“产品”字段。

于 2012-11-07T01:08:22.593 回答