JSTL - c: url does not work with form action

I am having trouble using a tag to indicate the path to the form in my JSP. I have one outside the form tag, and this works great. However, it does not work inside the spring form tag. Am I doing something wrong or not working inside other JSTL tags? Thanks in advance!

This is what the version outside the form is true.

/ searchtool / user / add

This form action is set to:

/ searchtool / user /% 3CC: URL% 20value = '/ user / add'% 20 /% 3E

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <div class="container"> <div class="row"> <div class="col-xs-12 col-sm-8 col-md-6"> <h3>User - Add</h3> <br> <spring:hasBindErrors name="user.*"> <div class="alert alert-danger"> <sf:errors path="firstName"></sf:errors> <sf:errors path="lastName"></sf:errors> <sf:errors path="email"></sf:errors> <sf:errors path="userName"></sf:errors> <sf:errors path="password"></sf:errors> </div> </spring:hasBindErrors> <sf:form commandName="user" method="post" action="<c:url value='/user/add' />"> <c:url value='/user/add' /> <div class="form-group"> <label for="first-name">First Name</label> <sf:input path="firstName" id="first-name" class="form-control" placeholder="First Name" /> </div> <div class="form-group"> <label for="last-name">Last Name</label> <sf:input path="lastName" id="last-name" class="form-control" placeholder="Last Name" /> </div> <div class="form-group"> <label for="email">Email</label> <sf:input path="email" id="email" class="form-control" placeholder="Email" /> </div> <div class="form-group"> <label for="user-name">Username</label> <sf:input path="userName" id="user-name" class="form-control" placeholder="Username" /> </div> <div class="form-group"> <label for="password">Password</label> <sf:password path="password" id="password" class="form-control" placeholder="" /> </div> <div class="form-group"> <label for="confirm-password">Confirm Password</label> <input type="password" id="confirm-password" class="form-control" placeholder="" /> </div> <button type="submit" class="btn btn-default">Save</button> <button type="button" class="btn btn-default">Cancel</button> </sf:form> </div> </div> </div> 
+10
spring-mvc jsp jstl
source share
2 answers

You cannot use a tag inside a tag. Therefore, simply separate the tags as follows:

 <c:url var="post_url" value="/user/add" /> <sf:form commandName="user" method="post" action="${post_url}"> 
+21
source share

Although Santoshi Joshi's answer is the preferred way, just to inform the alternative

 <sf:form commandName="user" method="post" action="${pageContext.request.contextPath}/user/add"> 
0
source share

All Articles