Java Spring MVC格式化程序和多通实体

Java Spring MVC格式化程序和多通实体,java,spring,spring-mvc,Java,Spring,Spring Mvc,我正在从事一个SpringMVC项目。名称类与性别类具有多对一关系。我有一个gendeformatter来处理创建和更新名称所需的选择列表: public class GenderFormatter implements Formatter<Gender> { @Autowired private GenderRepository genderRepository; public String print(Gender gender, Locale loc

我正在从事一个SpringMVC项目。名称类与性别类具有多对一关系。我有一个gendeformatter来处理创建和更新名称所需的选择列表:

public class GenderFormatter implements Formatter<Gender> {

    @Autowired
    private GenderRepository genderRepository;

    public String print(Gender gender, Locale locale) {
        return gender.getId().toString();
    }


    public Gender parse(String id, Locale locale) throws ParseException {   
        Gender gender = this.genderRepository.findOne(Integer.valueOf(id));
        return gender;
    }
}
这一切都很好。现在我为性别实体添加了CRUD函数,遇到了问题。GenderController和jsp对象遵循与名称代码相同的模式。只要GendePerformatter注册为转换服务,性别表单就不会处理数据的添加或更新。我假设是因为在性别添加或更新表单帖子上,格式化程序试图将性别字段转换为性别对象

有没有办法指定格式化程序应该格式化的时间或字段

    <form:form modelAttribute="name" method="${method}"
          class="form-horizontal" id="add-name-form">
          ...
          <!-- Gender Select List -->
          <spring:bind path="gender">
            <c:set var="cssGroup"
              value="control-group ${status.error ? 'error' : '' }" />
            <div class="${cssGroup}">
              <label class="control-label">Gender</label>

              <div class="controls">
                <form:select path="gender">
                  <form:option value="${name.gender.id}" label="${name.gender.gender}" />
                  <form:options items="${genders}" itemValue="id" itemLabel="gender" />
                </form:select>
                <span class="help-inline">${status.errorMessage}</span>
              </div>
            </div>
          </spring:bind>
      @RequestMapping(value = "/names/new", method = RequestMethod.GET)
      public String initCreationForm(ModelMap model) {
        Name name = new Name();
        model.addAttribute(name);
        model.put("genders", this.nameAdminService.findGenders());
        return "name/addupdatename";
      }

      @RequestMapping(value = "/names/new", method = RequestMethod.POST)
      public String processCreationForm(@Valid Name name, BindingResult result,
          SessionStatus status) {

        if (result.hasErrors()) {
          return "name/addupdatename";
        } else {
          this.nameRepository.save(name);
          status.setComplete();
          return "redirect:/names/" + name.getId();
        }
      }