【问题标题】:Annotated Spring MVC @ModelAttribute automapping not working with associated objects带注释的 Spring MVC @ModelAttribute 自动映射不适用于关联对象
【发布时间】:2012-04-30 20:24:24
【问题描述】:

我正在使用带有注释的 Spring MVC。这是我的问题的简要概述。

我的领域:

public class Restaurant {    
    private String name;
    private Address address = new Address();
    //Get and set....
}

public class Address{
    private String street;
    //Get and set....
}

我的控制器:

//Configure and show restaurant form.
public ModelAndView showAction() {
   ModelAndView mav = new ModelAndView("/restaurant/showRestaurant");
   restaurant = new Restaurant();
   mav.addObject("restaurant", restaurant);
   return mav;
}

//Save restaurant
public ModelAndView saveAction(@ModelAttribute(value="restaurant") Restaurant restaurant,BindingResult result) {
    restaurant.getName();//<- Not is null
    restaurant.getAddress().getStreet(); //<- is null
} 

我的观点:

 <form>
    <span class="full addr1"> 
      <label for="Nome">Name<span class="req">*</span></label>
      <h:inputText class="field text large" value="#{restaurant.name}" 
         id="name" forceId="true" styleClass="field text addr"/>
    </span> 

    <span class="full addr1">
      <label for="Nome">Street <span class="req">*</span></label>
      <h:inputText class="field text large" value="#{restaurant.address.street}" 
         id="street" forceId="true" styleClass="field text addr"/>
    </span>  
 </form>

我的问题是,当我填写名称和街道以调用方法“saveAction”时,当我尝试填写餐厅时,名称来自街道但不是。

【问题讨论】:

    标签: spring jsf spring-mvc


    【解决方案1】:

    我对 jsf 不是很熟悉,但要在 spring 中绑定,您通常需要完整路径,即name="address.street",以便正确绑定街道名称

    【讨论】:

    • 但“h: inputText”不是名称属性
    【解决方案2】:

    尝试使用 spring 表单标签 http://static.springsource.org/spring/docs/2.0.x/reference/spring-form.tld.html 进行绑定。很简单。

    【讨论】:

    • 是在jsf spring中使用这个表单,因为我的页面是。 xhtml 我试过了,但找不到你知道可以使用的地方吗?
    • 我明白你在说什么,我认为jsf也管理bean,spring也管理bean。我不确定两者是否可以混淆。我会试着弄清楚。
    • 我认为 spring faces 与 JSF 有一些集成接触点。请看看这个static.springsource.org/spring-webflow/docs/2.0-m1/reference/…。它可能会对你有所帮助。
    猜你喜欢
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 2021-03-13
    • 2011-12-24
    • 2015-11-03
    • 2013-10-08
    • 2014-10-06
    相关资源
    最近更新 更多