Spring标记<form:input>
可以生成带有id和name属性的<input>
标记。我认为这个功能很有用,我想在使用非表单对象时使用它。
请看下面的代码。
“dto”对象被添加到“模型”对象以及“表单”然后我想自动生成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;
}
}
答案 0 :(得分:1)
如果你想从dto
生成id属性,那么它应该是
<form:input id="${dto.name}" path="name" />
答案 1 :(得分:1)
表单只能有一个支持对象。在您的示例中,后备对象是SampleForm的一个实例。您可以在SampleForm类中添加对SampleDto实例的引用:
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"/>