How to assign entity to another entity in a form using ThymeLeaf?





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







1















I am working on MVC Java project and am using Spring Boot with ThymeLeaf. The issue I have is, that when creating a Task, I want to select and save a User, that will be assign to the task. I managed to do the selection correctly, but am unable to save the selected user. It always saves without the User assigned.



Here is my Task entity class:



@Entity
public class Task extends BaseEntity {

private String name;

private String description;

private Date dateOfCreation;

@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date dueDate;

@ManyToOne
private User assignee;

public Task() {
this.dateOfCreation = new Date(System.currentTimeMillis());
}
}


My User entity is as follows:



@Entity
public class User extends BaseEntity {

private String username;

private String password;

@OneToMany(mappedBy = "assignee")
private List<Task> assignedTasks;
}


Where BaseEntity contains



@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;

@Version
private Integer version;


My controller function, that is responsible for my taskform.html is:



@RequestMapping("/new")
public String newTask(Model model){
model.addAttribute("task", new Task());
model.addAttribute("users", userService.getAllUsers());
return "task/taskform";
}


And my taskform.html looks like this:



<form class="form-horizontal" th:object="${task}" th:action="@{/task}" method="post">
<input type="hidden" th:field="*{id}"/>
<input type="hidden" th:field="*{version}"/>
<div class="form-group">
<label class="col-sm-2 control-label">Name:</label>
<div class="col-sm-10">
<input type="text" class="form-control" th:field="*{name}"/>
</div>
</div>

<div class="form-group">
<label class="col-sm-2 control-label">Description:</label>
<div class="col-sm-10">
<input type="text" class="form-control" th:field="*{description}"/>
</div>
</div>

<div class="form-group">
<label class="col-sm-2 control-label">Description:</label>
<div class="col-sm-10">
<input type="date" th:value="*{dueDate}" th:field="*{dueDate}" id="dueDate" />
</div>
</div>

<div class="form-group">
<label class="col-sm-2 control-label">Select user:</label>
<div class="col-sm-10">
<select class="form-control">
<option th:field="*{assignee}" th:each="assignee : ${users}" th:value="${assignee}" th:text="${assignee.username}">
</option>
</select>
</div>
</div>

<div class="row">
<button type="submit" class="btn btn-default">Submit</button>
</div>




I am trying to pass the object from users list as the value, but it does not work Any idea, how to do it?



Showing the users works as expected:



Working frontend



Null is being assigned to assignee column, where the user should be assigned.



Null in H2 Database



EDIT



Here is my POST method from Task Controller:



@RequestMapping(method = RequestMethod.POST)
public String saveOrUpdate(Task task){
taskService.persistTask(task);
return "redirect:/task/list";
}









share|improve this question

























  • how does your post method looks like?

    – Simon Martinelli
    Nov 23 '18 at 14:41











  • @SimonMartinelli I updated the question with the appropriate POST method.

    – Jan Kraus
    Nov 23 '18 at 15:13











  • If you set a breakpoint in the saveOrUpdate method do is the user assigned?

    – Simon Martinelli
    Nov 23 '18 at 15:41











  • @SimonMartinelli, the user is not assigned. Assignee is null.

    – Jan Kraus
    Nov 23 '18 at 15:44


















1















I am working on MVC Java project and am using Spring Boot with ThymeLeaf. The issue I have is, that when creating a Task, I want to select and save a User, that will be assign to the task. I managed to do the selection correctly, but am unable to save the selected user. It always saves without the User assigned.



Here is my Task entity class:



@Entity
public class Task extends BaseEntity {

private String name;

private String description;

private Date dateOfCreation;

@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date dueDate;

@ManyToOne
private User assignee;

public Task() {
this.dateOfCreation = new Date(System.currentTimeMillis());
}
}


My User entity is as follows:



@Entity
public class User extends BaseEntity {

private String username;

private String password;

@OneToMany(mappedBy = "assignee")
private List<Task> assignedTasks;
}


Where BaseEntity contains



@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;

@Version
private Integer version;


My controller function, that is responsible for my taskform.html is:



@RequestMapping("/new")
public String newTask(Model model){
model.addAttribute("task", new Task());
model.addAttribute("users", userService.getAllUsers());
return "task/taskform";
}


And my taskform.html looks like this:



<form class="form-horizontal" th:object="${task}" th:action="@{/task}" method="post">
<input type="hidden" th:field="*{id}"/>
<input type="hidden" th:field="*{version}"/>
<div class="form-group">
<label class="col-sm-2 control-label">Name:</label>
<div class="col-sm-10">
<input type="text" class="form-control" th:field="*{name}"/>
</div>
</div>

<div class="form-group">
<label class="col-sm-2 control-label">Description:</label>
<div class="col-sm-10">
<input type="text" class="form-control" th:field="*{description}"/>
</div>
</div>

<div class="form-group">
<label class="col-sm-2 control-label">Description:</label>
<div class="col-sm-10">
<input type="date" th:value="*{dueDate}" th:field="*{dueDate}" id="dueDate" />
</div>
</div>

<div class="form-group">
<label class="col-sm-2 control-label">Select user:</label>
<div class="col-sm-10">
<select class="form-control">
<option th:field="*{assignee}" th:each="assignee : ${users}" th:value="${assignee}" th:text="${assignee.username}">
</option>
</select>
</div>
</div>

<div class="row">
<button type="submit" class="btn btn-default">Submit</button>
</div>




I am trying to pass the object from users list as the value, but it does not work Any idea, how to do it?



Showing the users works as expected:



Working frontend



Null is being assigned to assignee column, where the user should be assigned.



Null in H2 Database



EDIT



Here is my POST method from Task Controller:



@RequestMapping(method = RequestMethod.POST)
public String saveOrUpdate(Task task){
taskService.persistTask(task);
return "redirect:/task/list";
}









share|improve this question

























  • how does your post method looks like?

    – Simon Martinelli
    Nov 23 '18 at 14:41











  • @SimonMartinelli I updated the question with the appropriate POST method.

    – Jan Kraus
    Nov 23 '18 at 15:13











  • If you set a breakpoint in the saveOrUpdate method do is the user assigned?

    – Simon Martinelli
    Nov 23 '18 at 15:41











  • @SimonMartinelli, the user is not assigned. Assignee is null.

    – Jan Kraus
    Nov 23 '18 at 15:44














1












1








1








I am working on MVC Java project and am using Spring Boot with ThymeLeaf. The issue I have is, that when creating a Task, I want to select and save a User, that will be assign to the task. I managed to do the selection correctly, but am unable to save the selected user. It always saves without the User assigned.



Here is my Task entity class:



@Entity
public class Task extends BaseEntity {

private String name;

private String description;

private Date dateOfCreation;

@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date dueDate;

@ManyToOne
private User assignee;

public Task() {
this.dateOfCreation = new Date(System.currentTimeMillis());
}
}


My User entity is as follows:



@Entity
public class User extends BaseEntity {

private String username;

private String password;

@OneToMany(mappedBy = "assignee")
private List<Task> assignedTasks;
}


Where BaseEntity contains



@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;

@Version
private Integer version;


My controller function, that is responsible for my taskform.html is:



@RequestMapping("/new")
public String newTask(Model model){
model.addAttribute("task", new Task());
model.addAttribute("users", userService.getAllUsers());
return "task/taskform";
}


And my taskform.html looks like this:



<form class="form-horizontal" th:object="${task}" th:action="@{/task}" method="post">
<input type="hidden" th:field="*{id}"/>
<input type="hidden" th:field="*{version}"/>
<div class="form-group">
<label class="col-sm-2 control-label">Name:</label>
<div class="col-sm-10">
<input type="text" class="form-control" th:field="*{name}"/>
</div>
</div>

<div class="form-group">
<label class="col-sm-2 control-label">Description:</label>
<div class="col-sm-10">
<input type="text" class="form-control" th:field="*{description}"/>
</div>
</div>

<div class="form-group">
<label class="col-sm-2 control-label">Description:</label>
<div class="col-sm-10">
<input type="date" th:value="*{dueDate}" th:field="*{dueDate}" id="dueDate" />
</div>
</div>

<div class="form-group">
<label class="col-sm-2 control-label">Select user:</label>
<div class="col-sm-10">
<select class="form-control">
<option th:field="*{assignee}" th:each="assignee : ${users}" th:value="${assignee}" th:text="${assignee.username}">
</option>
</select>
</div>
</div>

<div class="row">
<button type="submit" class="btn btn-default">Submit</button>
</div>




I am trying to pass the object from users list as the value, but it does not work Any idea, how to do it?



Showing the users works as expected:



Working frontend



Null is being assigned to assignee column, where the user should be assigned.



Null in H2 Database



EDIT



Here is my POST method from Task Controller:



@RequestMapping(method = RequestMethod.POST)
public String saveOrUpdate(Task task){
taskService.persistTask(task);
return "redirect:/task/list";
}









share|improve this question
















I am working on MVC Java project and am using Spring Boot with ThymeLeaf. The issue I have is, that when creating a Task, I want to select and save a User, that will be assign to the task. I managed to do the selection correctly, but am unable to save the selected user. It always saves without the User assigned.



Here is my Task entity class:



@Entity
public class Task extends BaseEntity {

private String name;

private String description;

private Date dateOfCreation;

@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date dueDate;

@ManyToOne
private User assignee;

public Task() {
this.dateOfCreation = new Date(System.currentTimeMillis());
}
}


My User entity is as follows:



@Entity
public class User extends BaseEntity {

private String username;

private String password;

@OneToMany(mappedBy = "assignee")
private List<Task> assignedTasks;
}


Where BaseEntity contains



@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;

@Version
private Integer version;


My controller function, that is responsible for my taskform.html is:



@RequestMapping("/new")
public String newTask(Model model){
model.addAttribute("task", new Task());
model.addAttribute("users", userService.getAllUsers());
return "task/taskform";
}


And my taskform.html looks like this:



<form class="form-horizontal" th:object="${task}" th:action="@{/task}" method="post">
<input type="hidden" th:field="*{id}"/>
<input type="hidden" th:field="*{version}"/>
<div class="form-group">
<label class="col-sm-2 control-label">Name:</label>
<div class="col-sm-10">
<input type="text" class="form-control" th:field="*{name}"/>
</div>
</div>

<div class="form-group">
<label class="col-sm-2 control-label">Description:</label>
<div class="col-sm-10">
<input type="text" class="form-control" th:field="*{description}"/>
</div>
</div>

<div class="form-group">
<label class="col-sm-2 control-label">Description:</label>
<div class="col-sm-10">
<input type="date" th:value="*{dueDate}" th:field="*{dueDate}" id="dueDate" />
</div>
</div>

<div class="form-group">
<label class="col-sm-2 control-label">Select user:</label>
<div class="col-sm-10">
<select class="form-control">
<option th:field="*{assignee}" th:each="assignee : ${users}" th:value="${assignee}" th:text="${assignee.username}">
</option>
</select>
</div>
</div>

<div class="row">
<button type="submit" class="btn btn-default">Submit</button>
</div>




I am trying to pass the object from users list as the value, but it does not work Any idea, how to do it?



Showing the users works as expected:



Working frontend



Null is being assigned to assignee column, where the user should be assigned.



Null in H2 Database



EDIT



Here is my POST method from Task Controller:



@RequestMapping(method = RequestMethod.POST)
public String saveOrUpdate(Task task){
taskService.persistTask(task);
return "redirect:/task/list";
}






spring spring-mvc spring-boot spring-data-jpa thymeleaf






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Dec 8 '18 at 0:34









Satan Pandeya

2,51531635




2,51531635










asked Nov 23 '18 at 14:23









Jan KrausJan Kraus

84




84













  • how does your post method looks like?

    – Simon Martinelli
    Nov 23 '18 at 14:41











  • @SimonMartinelli I updated the question with the appropriate POST method.

    – Jan Kraus
    Nov 23 '18 at 15:13











  • If you set a breakpoint in the saveOrUpdate method do is the user assigned?

    – Simon Martinelli
    Nov 23 '18 at 15:41











  • @SimonMartinelli, the user is not assigned. Assignee is null.

    – Jan Kraus
    Nov 23 '18 at 15:44



















  • how does your post method looks like?

    – Simon Martinelli
    Nov 23 '18 at 14:41











  • @SimonMartinelli I updated the question with the appropriate POST method.

    – Jan Kraus
    Nov 23 '18 at 15:13











  • If you set a breakpoint in the saveOrUpdate method do is the user assigned?

    – Simon Martinelli
    Nov 23 '18 at 15:41











  • @SimonMartinelli, the user is not assigned. Assignee is null.

    – Jan Kraus
    Nov 23 '18 at 15:44

















how does your post method looks like?

– Simon Martinelli
Nov 23 '18 at 14:41





how does your post method looks like?

– Simon Martinelli
Nov 23 '18 at 14:41













@SimonMartinelli I updated the question with the appropriate POST method.

– Jan Kraus
Nov 23 '18 at 15:13





@SimonMartinelli I updated the question with the appropriate POST method.

– Jan Kraus
Nov 23 '18 at 15:13













If you set a breakpoint in the saveOrUpdate method do is the user assigned?

– Simon Martinelli
Nov 23 '18 at 15:41





If you set a breakpoint in the saveOrUpdate method do is the user assigned?

– Simon Martinelli
Nov 23 '18 at 15:41













@SimonMartinelli, the user is not assigned. Assignee is null.

– Jan Kraus
Nov 23 '18 at 15:44





@SimonMartinelli, the user is not assigned. Assignee is null.

– Jan Kraus
Nov 23 '18 at 15:44












0






active

oldest

votes












Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53448424%2fhow-to-assign-entity-to-another-entity-in-a-form-using-thymeleaf%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53448424%2fhow-to-assign-entity-to-another-entity-in-a-form-using-thymeleaf%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







這個網誌中的熱門文章

Academy of Television Arts & Sciences

L'Équipe

1995 France bombings