今天遇到一个问题就是Spring标签与jsp表达式的问题
直接上代码
<form:form commandName="book" action="/book_update" method="post"> <fieldset> <legend>Edit a book</legend> <form:hidden path="id"/> <p> <label for="category">Category: </label> <form:select id="category" path="category.id" items="${categories}" itemLabel="name" itemValue="id"/> </p> <p> <label for="title">Title: </label> <form:input id="title" path="title"/> </p> <p> <label for="author">Author: </label> <form:input id="author" path="author"/> </p> <p> <label for="isbn">ISBN: </label> <form:input id="isbn" path="isbn"/> </p> <p id="buttons"> <input id="reset" type="reset" tabindex="4"> <input id="submit" type="submit" tabindex="5" value="Update Book"> </p> </fieldset> </form:form>
问题是在action="/book_update"中,这个action经过在提交时会有问题,想起了项目中的basepath,就试着去做了,但是总会报一个错,就是%>没有正确的结束,猜测是因为spring标签中不能插入java表达的代码,后来查了一下,说spring标签兼容el,所以,就这样写
//获取basepath
<%basepath="..."%>
<c:url value="<%=basepath%> var="basepath" />
在action这样写
action="/'${basepath}'book_update"
这样就ok,核心是用el表达式不要用输出表达式
补充:
<% %> 叫做java脚本(局部变量)
<%= %> 叫做输出表达式
<%! %> 叫做jsp声明(相当于全局变量)
<%-- --%> 叫做jsp注释