java - 如何使用<表单:input> for NOT form object

标签 java spring jsp spring-mvc jsp-tags

Spring 标签<form:input>可以生成<input>带有 id 和 name 属性的标签。我认为这个功能很有用,我想在使用非表单对象时使用它。 请查看下面的代码。

“dto”对象被添加到“model”对象以及“form”中,然后我想自动生成id属性。然而,<form:input>标签似乎能够用于绑定(bind)表单对象。我是否必须制作自定义标签才能实现类似的功能?任何帮助将不胜感激?

[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;
    }

}

最佳答案

一个表单只能有一个支持对象。在您的示例中,支持对象是 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"/> 

关于java - 如何使用<表单:input> for NOT form object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5169086/

相关文章:

java - 未终止 <html :form tag JSP

java - 卡组的面向对象设计 - 如何使其灵活地在未来拥有更多的卡

java - 如果我们有一 block 蛋糕,那么找到数组中最高平均值的最有效算法是什么?

java - Java Spring @Autowired无法按预期工作

java - 使用一对一关系 hibernate 进行更新

javascript - 从选择标签中获取所选文本并将其传递给另一个选择标签

javascript - 如何将数据从 Java 类传递到 JSP 页面

java - 您如何获取磁盘上的文件,而不仅仅是 Java 中的文件大小?

java - Minecraft Forge Mod使gradlew构建不起作用

java - `@Autowire` 正在工作,即使 <context :annotation-config/>, 没有注释替换