我正在尝试打开我的表单,在HTML表格上单击编辑按钮时填写每个文本框,其中所有数据都存储在列表中,每行都有编辑按钮。当我点击编辑时,它将从restaurant.jsp页面重定向到edit_restaurant.jsp页面。
我的restuarant.jsp页面有一个HTML表格列表,其中每行都有编辑按钮,我希望点击该编辑按钮我将重定向到edit_restaurant.jsp页面,其中所有数据都可以填充id键这是绑定到我的编辑按钮。
我想要的是使用liferay自定义mvc portlet获取另一个jsp按钮中的按钮ID。所以任何人都可以指导我如何使它成为可能。
以下是我尝试过的代码片段。
以下是我的编辑按钮列:
<td><input type="submit" id=<%=temprest.getPrimaryKey()s%> onclick="return getbuttonId('<%=temprest.getPrimaryKey() %>')" value="edit" /></td>
...点击该按钮将调用以下Javascript:
<script type="text/javascript">
function getbuttonId(sid){
// document.editform.action=url;
// document.editform.submit();
var url="<%= editURL.toString()%>";
window.location.href = url+"?sid="+sid;
return false ;
}
</script>
我的portlet操作网址如下:
<portlet:actionURL name="editRestaurant" var="editURL">
</portlet:actionURL>
...我通过portlet action url调用的方法在我的action类中:
public void editRestaurant(ActionRequest reqeust,ActionResponse response) throws Exception
{
String str= reqeust.getParameter("sid");
long l=Long.valueOf(str);
//Retriev table data using Primary key
restaurant rest=restaurantLocalServiceUtil.getrestaurant(l);
//Set Attribute which has all values of specified pk.
reqeust.setAttribute("edit",rest );
// Redirect to Jsp page which has Update form.
response.setRenderParameter("jspPage","/jsps/edit_restaurant.jsp");
}
当我点击编辑功能
时,我收到了这样的错误 java.lang.NoSuchMethodException: emenu.advertise.portlet.RestaurantPortlet.editRestaurant?sid=5(javax.portlet.ActionRequest, javax.portlet.ActionResponse)
有人可以指导我解决这个问题吗?
@
这里我希望分配给我的按钮id的sid值应该在页面重定向之前转移到此字符串值
<%
String restId=request.getParameter("sid");
//can i call sid value of javascript function getbuttonId() here
%>
<portlet:actionURL name="editRestaurant" var="editURL">
<portlet:param name="key" value="<%=restId %>"/>
</portlet:actionURL>
答案 0 :(得分:1)
请阅读:
How to redirect to another webpage in JavaScript/jQuery?
查询不是必需的,window.location.replace(...)将最好地模拟HTTP重定向。
它比使用window.location.href =更好,因为replace()不会将原始页面放在会话历史记录中,这意味着用户不会陷入永无止境的后退按钮惨败。如果要模拟某人点击链接,请使用location.href。如果要模拟HTTP重定向,请使用location.replace。
例如:
// similar behavior as an HTTP redirect
window.location.replace("http://stackoverflow.com");
// similar behavior as clicking on a link
window.location.href = "http://stackoverflow.com";
答案 1 :(得分:1)
无论如何用以下代码解决了我的问题:
function getbuttonId(sid){
alert("Are You Sure You want to Edit");
// document.editform.action=url;
// document.editform.submit();
var textbox = document.getElementById('hiddenkey');
textbox.value=sid;
document.editform.action = "<%=editURL.toString() %>";
document.editform.submit();
return false ;
}
和onclick按钮我正在调用上面的javascript方法。所以效果很好。
其实我想要的是点击的特定按钮的ID,所以我将该id存储在隐藏的密钥中,在java脚本中的表单提交操作后,我重定向到我想要的页面然后我可以获得隐藏密钥的值request.getattribute(hiddenkey字段名称)中的字段。