我对这两种技术都不是很熟悉,所以请耐心等待。我的 jsp 页面上有一组单选按钮。它们的价值为 1-5。我想将该新评级更新到数据库中。我知道我必须以某种方式利用“onselect”事件,但我没有找到任何有帮助的东西。有谁知道如何做到这一点?谢谢你。
3 回答
假设它不是一种形式:
- 在javascript中检测变化
- 将其发布到您的服务器端脚本
- 也许处理它并更新数据库
您最好的选择是使用onchange
并将其设置为将读取select
标签的函数。该函数应如下所示。
function ratingChange(ele){
var opt = sel.options[sel.selectedIndex].value;
var txt = sel.options[sel.selectedIndex].text;
//process values and test
//assuming the form is not submitting use AJAX
}
然后onchange
看起来像这样。
<select name="rating" onchange="ratingChange(this)">
由于您在标签中包含了 spring-mvc,我假设您想要更多关于从客户端发送信息到服务器的信息。
如果您只是使用 JSP 和标准表单,如果您在 spring 中将“commandName”和“方法”与控制器匹配,控制器将捕获通过表单发送的参数:
<form id="form" commandName="interceptedPath" method="post">
<input id="rating1" type="radio" name="rating" value="1" checked><label for="rating1">1</label>
<input id="rating2" type="radio" name="rating" value="2"><label for="rating2">2</label>
<input id="rating3" type="radio" name="rating" value="3"><label for="rating3">3</label>
<input id="rating4" type="radio" name="rating" value="4"><label for="rating4">4</label>
<input id="rating5" type="radio" name="rating" value="5"><label for="rating5">5</label>
</form>
@RequestMapping(value = "/interceptedPath/", method = RequestMethod.POST)
public String submit(Model model, HttpServletRequest request) {
Map<String, String[]> parameterMap = request.getParameterMap();
String[] strings = parameterMap.get("rating")
return "detailedCalc";
}
除非您在做一些动态的事情,比如 Ajax 调用,否则不需要 JavaScript。如果您决定使用 Javascript,我建议您使用jQuery库:
$(document).ready(function () {
$("form").submit(function () {
$.post('/spring/locationOfAjaxController', $(this).serialize(),
function (data) {
}
}
}
对于上面的代码,在文档加载到客户端之后。创建一个事件,该事件将捕获“表单”对象上的所有“提交”操作(注意表单的 id 是“表单”)。一旦发生这种情况,jQuery 将向指定的 URL 提交一个 POST。$(this).serialize()
将表单数据序列化为 JSON,这将需要由服务器处理。
如果您想使用change做某事,请参阅此参考。
您可以使用 maven 原型找到一个很好的 spring-mvc(没有 js)示例:org.fluttercode.knappsack:spring-mvc-jpa-demo-archetype
。它将生成一个已经设置好 spring-mvc 并准备就绪的基本项目。