我正在学习Web开发的同时,在一个小型的Servlets & JSP应用程序中工作。使用Servlet和JSP验证号码
我对jsp和servlet之间的验证和传递值有个疑问。
我有一个“啤酒”类,有一个“评级”属性(类型为double)。
加载“edit.jsp”的servlet将创建一个Beer对象并从DB加载当前值。
BeerDAO beerdao = new BeerDAO();
Beer beer = beerdao.getBeer(id);
request.setAttribute("beer", beer);
在JSP,对象被显示在下面的方式:
...
<td class="left">Beer Name:</td>
<td><input type="text" name="name" value="${beer.name}"/></td>
...
<td class="left">Rating:</td>
<td><input type="text" name="rating" value="${beer.rating}"/></td>
...
现在,当我提交表单到“更新”的servlet,每个属性被验证。在“评级”属性的情况下,我将其转换为双倍。
我应该在验证中发现一个错误(即:字母,而不是数字的评分值),我想返回到用户键入的值和错误消息的表单。事情是,我需要在表单中显示请求中的啤酒对象,但我无法将“评级”值传递给它,因为它不是正确的类型。所以现在我将用户带回一个空白评级的表单。
我猜我错了。那么,验证数字并回到编辑表单的正确方法是什么?
谢谢!你的解决方案非常漂亮。我不知道参数对象。 – robertrv 2011-03-31 22:59:24
不客气。有关EL中的隐式对象的更多信息,请参阅此答案http://stackoverflow.com/questions/2113286/what-are-implicit-objects-what-does-it-mean – BalusC 2011-03-31 23:36:36