0

I have a local Oracle database with which I've established a solid connection. Now I just want to POST data from an HTML input form using a Controller to handle said data.

My form looks like this:

<form action="/request/save" method="post">
    <input type="text" id="dateInput" name="requestDate" value="1" style="display: none;"/>
    <input type="text"  name="description" value="This is a test request." style="display: none;"/>
    <input type="text" name="status" value="false" style="display: none;"/>
    <div style="width: 200px;"><input type="submit" value="Submit Request" style="display: block;"></div>
 </form>

Controller:

@RequestMapping(value = "/save", method = RequestMethod.POST)
    String saveRequest(Principal principal, @ModelAttribute Request request, Model model) {
        // Set UserId to Request Field USER_ID
        Users user = usersRepository.findOneByInitialName(principal.getName());
        Request requestObj = new Request(user, new Date());
        requestObj.setId(user.getId());

        // Set Additional Request Fields
        requestObj.setDescription("Test");
        requestObj.setStatus(false);
        requestObj.setRequestDate(new Date());

        // Save Request Object
        requestRepository.save(requestObj);
        return "requests";
    }

Entity (for completion):

@Entity
public class Request {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="request_id")
    private Long id;
    private Date requestDate;
    private String description;
    private Boolean status;
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="user_id", nullable = false)
    private Users users;

    public Request() {}

    public Request(Users user, Date requestDate) {
        this.setUsers(user);
        this.setRequestDate(requestDate);
    }

    @Override
    public String toString() {
        return String.format(
                "Request[id=%d, inital='%s', requestDate='%s']",
                getId()
                , getUsers().getInitialName()
                , getRequestDate());
    }


    public Date getRequestDate() {
        return requestDate;
    }

    public void setRequestDate(Date requestDate) {
        this.requestDate = requestDate;
    }

    public Boolean getStatus() {
        return status;
    }

    public void setStatus(Boolean status) {
        this.status = status;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Users getUsers() {
        return users;
    }

    public void setUsers(Users users) {
        this.users = users;
    }
}

How can I send the data from the form to my database?

Error:

Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
0

1 Answer 1

1

You might have configured csrf filter in your web.xml, so you need to pass "X-CSRF-TOKEN" in your request header.

Sign up to request clarification or add additional context in comments.

1 Comment

I added this to my form <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>. I'm still getting an error. What would adding the csrf filter to the request header look like in code?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.