Spring MVC-使用Javascript设置actionURL参数
是否可以使用javascript动态设置SpringMVCPortlet:ActionUrlPortlet:param?我已经尝试了以下代码,但是对于控制器,id值总是显示为null。我已经验证了手动设置portlet:param是否正确传递了值:Spring MVC-使用Javascript设置actionURL参数,javascript,forms,spring-mvc,portlet,Javascript,Forms,Spring Mvc,Portlet,是否可以使用javascript动态设置SpringMVCPortlet:ActionUrlPortlet:param?我已经尝试了以下代码,但是对于控制器,id值总是显示为null。我已经验证了手动设置portlet:param是否正确传递了值: <portlet:param name="id" value="2" /> 控制器: @RequestMapping(params = {"do=modify"}) public void modify(@ModelAttribute(
<portlet:param name="id" value="2" />
控制器:
@RequestMapping(params = {"do=modify"})
public void modify(@ModelAttribute("model") Model model,
@RequestParam(value = "id", required=true) Long id,
ActionRequest request, ActionResponse response,
SessionStatus sessionStatus, ModelMap modelMap) {
....
一位同事想出了办法。看起来您只需将参数添加到javascript中的操作中,而不必将其包含在actionURL或表单中 JSP:
大约3年后,我遇到了这个问题,但我发现添加隐藏表单字段和单击操作比将此值设置为隐藏字段更容易 差不多
<input type="submit" id="btn_terminate_cmpn"
value="Terminar campaña" onclick="setAction('terminate');">
portlet标记生成的URL位于服务器端。Javascript没有看到portlet标记。它只看到实际的URL。你的同事的建议是可行的,但这不是一个好方法。在这里,他只是将动态参数添加为查询字符串参数,使其对目标门户页面上的所有portlet可见。更好的解决方案是保留一个隐藏元素文本框或其他东西,并在onsubmitjavascript hander函数中为该隐藏元素设置动态值
@RequestMapping(params = {"do=modify"})
public void modify(@ModelAttribute("model") Model model,
@RequestParam(value = "id", required=true) Long id,
ActionRequest request, ActionResponse response,
SessionStatus sessionStatus, ModelMap modelMap) {
....
<portlet:actionURL var="modifyURL">
<portlet:param name="do" value="modify" />
</portlet:actionURL>
...
<form:form action="${modifyURL}" id="modifyForm" modelAttribute="model" method="POST">
</form:form>
function update() {
$("modifyForm").action = '${modifyURL}&id='+selectedId;
$("modifyForm").submit();
}
<input type="submit" id="btn_terminate_cmpn"
value="Terminar campaña" onclick="setAction('terminate');">
function setAction(action){
$("#actionToDo").val(action);
}