1

我试图打开我的表单,点击 HTML 表上的编辑按钮填写每个文本框,我的所有数据都存储在列表中,每一行都有编辑按钮。当我单击编辑时,它将从 restaurant.jsp 页面重定向到 edit_restaurant.jsp 页面。

我的 restuarant.jsp 页面有一个 HTML 表格列表,其中每一行都有编辑按钮,我希望单击该编辑按钮时,我将重定向到 edit_restaurant.jsp 页面,所有数据都可以用绑定的 id 键填充到我的编辑按钮。

我想要的是在另一个jsp按钮中获取按钮的ID。我正在使用liferay自定义mvc portlet,所以任何人都可以指导我如何使它成为可能。

这是我尝试过的代码片段。

以下是我的编辑按钮栏:

<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 操作 url 如下:

<portlet:actionURL name="editRestaurant" var="editURL">

</portlet:actionURL>

...我通过 portlet 操作 url 调用的方法在我的操作类中:

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>
4

2 回答 2

1

无论如何,使用以下代码解决了我的问题:

函数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 字段名)。

于 2012-10-24T06:18:08.037 回答
1

请阅读这个:

如何在 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";
于 2012-10-22T07:09:26.643 回答