Java 如何使用<;表格:输入>;对于非窗体对象

Java 如何使用<;表格:输入>;对于非窗体对象,java,spring,jsp,spring-mvc,jsp-tags,Java,Spring,Jsp,Spring Mvc,Jsp Tags,Spring标记可以生成带有id和name属性的标记。我认为这个特性很有用,我想在使用非表单对象时使用它。 请看下面的代码 “dto”对象被添加到“model”对象以及“form”中,然后我想自动生成id属性。然而,标记似乎能够用于绑定表单对象。为了实现类似的功能,我是否必须制作一个自定义标记?如果有任何帮助,我们将不胜感激 [Controller] @RequestMapping(method = RequestMethod.GET) public String show(Model mod

Spring标记
可以生成带有id和name属性的
标记。我认为这个特性很有用,我想在使用非表单对象时使用它。 请看下面的代码

“dto”对象被添加到“model”对象以及“form”中,然后我想自动生成id属性。然而,
标记似乎能够用于绑定表单对象。为了实现类似的功能,我是否必须制作一个自定义标记?如果有任何帮助,我们将不胜感激

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

}
[控制器]
@RequestMapping(method=RequestMethod.GET)
公共字符串显示(模型,HttpServletRequest){
SampleForm form=新的SampleForm();
form.setName(“表单对象的名称”);
SampleDto dto=新的SampleDto();
dto.setName(“dto对象的名称”);
model.addAttribute(“表单”,表单);
model.addAttribute(“dto”,dto);
返回“样本/输入”;
}
[JSP]
${dto.name}
[表格]
公共类抽样表{
私有字符串名称;
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
}
[Dto]
公共类样本{
私有字符串名称;
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
}

如果要从
dto
生成id属性,则应

<form:input id="${dto.name}" path="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"/> 


谢谢您的回答,我为我的问题感到困惑而道歉。在您的回答中,“name”可以是“SampleForm”类的一个字段,但我想用标记显示“SampleDto.name”的值。@yusaku没问题。你要找的还没有到春天(请看)。您将不得不使用JSTL或其他方法来构建输入标记,而不是使用。谢谢您的建议。但是我想使用SampleDto作为只读对象,所以我认为SampleDto不应该在backing对象中。。抱歉,我的问题没有意义。如果它是只读的,那么为什么需要基于它的元素?