Как пользоватьсядля НЕ формы объекта - PullRequest
0 голосов
/ 02 марта 2011

Spring tag <form:input> может генерировать <input> тег с атрибутами id и name.Я думаю, что эта функция полезна, и я хочу использовать это при использовании не форм объекта.Пожалуйста, взгляните на коды ниже.

Объект "dto" добавляется к объекту "model", а также к "form", тогда я хочу автоматически сгенерировать атрибут id.Тем не менее, тег <form:input> может использоваться для привязки объекта формы.Должен ли я сделать собственный тег, чтобы реализовать подобную функцию?Любая помощь будет оценена?

[Controller]

@RequestMapping(method = RequestMethod.GET)
public String show(Model model, HttpServletRequest request) {


    SampleForm form = new SampleForm();
    form.setName("Name of Form Object");

    SampleDto dto = new SampleDto();
    dto.setName("Name of Dto Object");

    model.addAttribute("form", form);
    model.addAttribute("dto", dto);

    return "sample/input";

}

[JSP]

<body>
<form:form modelAttribute="form" method="post">

    <%-- Generate with id attribute like <input id="name" name="name" type="text" value="Name of Form Object"/>  --%>
    <form:input path="name" />

    <%-- I tried below but an error occured--%>
    <%-- <form:input path="${dto.name}" /> --%>

    <%-- Just a String display like "Name of Dto Object" --%>
    ${dto.name}

    <input type="submit" name="register" value="register" />
</form:form>
</body>

[Form]
public class SampleForm {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

[Dto]
public class SampleDto {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

Ответы [ 2 ]

1 голос
/ 02 марта 2011

Форма может иметь только один вспомогательный объект. В вашем примере объект поддержки является экземпляром SampleForm. Вы можете добавить ссылку на экземпляр SampleDto в своем классе SampleForm:

public class SampleForm {
  private String name;
  private SampleDto dto;
  public String getName() {
     return name;
  }
  public void setName(String name) {
     this.name = name;
  }
  public SampleDto getDto() {
     return dto;
  }
  public void setDto(SampleDto dto) {
     this.dto = dto;
  }
}

Тогда вы можете сделать это в своем JSP:

<form:input path="dto.name"/> 
1 голос
/ 02 марта 2011

Если вы хотите сгенерировать атрибут id из dto, тогда он должен быть

<form:input id="${dto.name}" path="name" />
...