1

すべてのデータがリストに保存され、各行に編集ボタンがあるHTMLテーブルの編集ボタンをクリックしてすべてのテキストボックスに入力してフォームを開こうとしています。[編集]をクリックすると、restaurant.jspページからedit_restaurant.jspページにリダイレクトされます。

私のrestuarant.jspページには1つのHTMLテーブルリストがあり、各行に編集ボタンがあります。その編集ボタンをクリックすると、edit_restaurant.jspページにリダイレクトされ、すべてのデータがバインドされたidキーでいっぱいになります。私の編集ボタンに。

私が欲しいのは、liferayカスタムmvcポートレットを使用して、別のjsp button..amでボタンの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>

私のポートレットアクションのURLは次のとおりです。

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

</portlet:actionURL>

...そして、ポートレットアクション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

これを読んで下さい:

JavaScript / jQueryで別のウェブページにリダイレクトする方法は?

クエリは必要ありません。window.location.replace(...)はHTTPリダイレクトを最もよくシミュレートします。

replace()は元のページをセッション履歴に入れないため、window.location.href =を使用するよりも優れています。つまり、ユーザーは終わりのない戻るボタンの大失敗に陥ることはありません。リンクをクリックする人をシミュレートする場合は、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 に答える
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 ;

}

ボタンをクリックすると、上記のjavascriptメソッドを呼び出します。だからそれはうまくいきます。

実際に必要なのは、クリックされた特定のボタンのIDでした。そのため、そのIDを非表示キーに保存し、Javaスクリプトでフォーム送信アクションを実行した後、目的のページにリダイレクトします。その後、非表示キーフィールドの値を取得できます。 request.getattribute(hiddenkeyフィールド名)。

于 2012-10-24T06:18:08.037 に答える