如何在java中设置html输入字段的值?

8hhllhi2  于 2021-07-03  发布在  Java
关注(0)|答案(3)|浏览(309)

我有两份档案。包含 <input type="text"> 以及包含java方法的.java。在java方法中,我需要设置html输入的值。代码是什么?
这是我的密码。
看法

<form action="personform" method="post" th:object="${personBind}">
<input type="text" name="name" th:field="*{name}">
<input type="text" name="year" th:field="*{year}">

spring mvc控制器

ModelAndView modelAndView = new ModelAndView("Person.html");
modelAndView.addObject("personBind", person);
return modelAndView;

name字段中的值来自modelandview中的person对象。很好用。但是“年份”字段的值不在person对象中。我想在年份字段中设置来自不同来源的值。我应该编写什么代码来设置年份字段中的值?

n1bvdmb6

n1bvdmb61#

使用在控制器类中添加要以窗体形式填充的模型对象

Student s = new Student("job","tyson");
    model.addAttribute("student",s);

现在可以通过使用表单标记在表单中使用相同的对象值

<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<html>
<head>

<title>form</title>
</head>
<body>

    <form:form action="processForm" modelAttribute="student">'

    First Name : <form:input path="firstName" />

    <input type="submit">

    </form:form>

</body>
</html>

modelattribute应该与控制器传递给jsp的model属性相匹配,后台的spring将通过调用各自的getter方法来填充表单输入。因此firstname输入字段将填充student.getfirstname(),如果为null,则输入字段将为空。

jgwigjjp

jgwigjjp2#

经过一些测试我找到了答案。
这就是我在问题上发布的代码需要更新的方式。
看法

<form action="personform" method="post" th:object="${personBind}">
<input type="text" name="name" th:field="*{name}">
<input type="text" name="year" th:value="${yearBind}">

控制器

ModelAndView modelAndView = new ModelAndView("Person.html");
modelAndView.addObject("personBind", person);
modelAndView.addObject("yearBind", "2020");
return modelAndView;

请注意,它是年份的th:值,而不是th:字段。

gmxoilav

gmxoilav3#

如果我完全理解您的问题,您希望从不同对象的数据填充year字段。也许可以尝试实现一个数据传输对象来支持表单,而不是您试图修改的实际对象。像这样:

public class Person {

    private String name;
    private Year year;

    public Person() {
    }

    public String getName() {
        return name;
    }

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

    public Year getYear() {
        return year;
    }

    public void setYear(Year year) {
        this.year = year;
    }
}

public class PersonDTO {

    private String name;
    private String year;

    public PersonDTO() {
    }

    public String getName() {
        return name;
    }

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

    public String getYear() {
        return year;
    }

    public void setYear(String year) {
        this.year = year;
    }

    public Person getPerson() {
        Person person = new Person();
        person.setName(name);
        person.setYear(Year.parse(year));
        return person;
    }
}

在你的控制器里有这样的东西

PersonDTO dto = new PersonDTO();
// manipulate object as needed, setters ect.

ModelAndView modelAndView = new ModelAndView("Person.html");
modelAndView.addObject("personDto", dto);
return modelAndView;

你的胸腺切除术像这样

<form action="personform" method="post" th:object="${personDto}">
<input type="text" name="name" th:field="*{name}">
<input type="text" name="year" th:field="*{year}">

这样做的目的是将person对象与表单分离,这样,如果年份数据来自其他地方,您就可以修改dto,以便在 @PostMapping 在处理表单数据的地方,保存它。你可以打电话 personDto.getPerson() 拯救世界 Person 反对或做任何你计划做的事。

相关问题