2016-04-18 1 views
1

私は前の質問から知っています(page values are not loaded)フォームを送信するためのリンクは使用できません。ボタンをリンクのように見せたり、JavaScriptを使う必要があります。私はイテレータの内部に以下のリンクを持っています。リンク付きのJavaScriptを使用してStruts2でページフィールド値を保存する

<s:iterator value="chosenShipperViewList"> 
     <div class="col-sm-3 col-xs-12 text-left"> 
      <s:url var="deleteLink"><s:param name="shipperName" value="%{organizationInfo.orgName}"></s:param></s:url> 
      <s:a id="deleteShipper" onclick="deleteShipperFromChosenShipperViewList();" href="%{deleteLink}" > 
       <img src="/llr/theme/delete.gif" width="16" height="16" alt="Map Red X" > 
      </s:a> 
     </div> 
     <hr> 
</s:iterator> 

JavaScript関数は

function deleteShipperFromChosenShipperViewList(){ 
if(confirmDelete()){ 
     var oldAction = document.getElementById("shipment").action; 
     var url = oldAction.replace("shipment","shipment"+"_deleteShipperFromChosenShipperViewList"); 
     document.forms[0].action = url; 
     document.forms[0].submit(); 
} 

}です。

Javaアクションページにする唯一のフィールド値は、パラメータとして渡されるshipperNameなので、私は明らかにリンクでJavaScript関数を正しく使用していません。どんな助けもありがとう。

+0

フォームを表示してください。 –

+0

@AleksandrMフォームのjspコードをすべて表示しますか?私は気にしませんが、それは400行のコードです。 – ponder275

+0

単一フォームは400行のコードですか?ここは何かがおかしい。たぶんあなたはそれを何らかの種類のウィザードに分割する必要があります。とにかく、あなたは1つのjsが動作し、もう1つは動作しないと言っていますか?彼らの違いは何ですか? –

答えて

0

でパラメータを使用する必要があります。私はリンクを使用していたので、ユーザーが削除したいと思っていた荷送人のorgidにアクセスすることができましたが、荷送人を削除する前にユーザーが入力したすべてのページフィールド値を保存する方法を見つけることができませんでした。そこで私は以前の質問hereにAleksandr M.が与えたアドバイスを受け取り、私が画像(赤いX)として表示した投稿へのリンクを変更しました。 deleteShipperFromChosenShipperViewList()機能に'%{organizationInfo.orgId}'を渡す

<s:iterator value="chosenShipperViewList" status="status"> 
     <div class="col-sm-2 col-xs-12 "><label class="pull-right"><s:text name="name"></s:text>:</label></div> 
     <div class="col-sm-9 col-xs-12 text-left"><s:property value="organizationInfo.orgName"/></div> 
     <div class="col-sm-1 col-xs-12 text-left"> 
      <s:submit action="shipment_deleteShipperFromChosenShipperViewList" type="image" 
         src="/llr/theme/delete.gif" 
         onclick="clearDirtyFlag();deleteShipperFromChosenShipperViewList('%{organizationInfo.orgId}');" /> 
     </div> 
     <hr> 
</s:iterator> 

は、私は、ユーザーが機能を削除したい荷主のためorgIdを通過させます。リンクの代わりに<s:submit>を使用すると、ユーザーが入力した値はすべて保存されます。Struts次のように隠しフィールドに保存されたJavaアクションページdeleteShipperFromChosenShipperViewList()に値を取得するには:

<s:hidden name="deleteOrgId"></s:hidden> 

、なぜidがある<s:form action="shipment">フォーム内である:

function deleteShipperFromChosenShipperViewList(orgIdOfShipperToRemove){ 
    if(confirmDelete()){ 
    document.getElementById('shipment_deleteOrgId').value = orgIdOfShipperToRemove; 
}}; 

は隠しフィールドがある場合隠しフォームの名前はshipment_deleteOrgIdです。

0

あなたが試した第2の方法を選択することができます。

コードでは、削除アクションのリンクを作成するのに、urlタグを使用しています。これにはパラメータが必要です。

<s:url var="deleteLink"><s:param name="shipperName" value="%{organizationInfo.orgName}"/></s:url> 

あなたはsubmit()が呼び出される前に、action属性を変更するためにJavaScriptコードでは、このURLを使用する必要があります。

このURLをパラメータとして関数に渡すことができます。

<s:a id="deleteShipper" onclick="deleteShipperFromChosenShipperViewList('%{#deleteLink}');" href="#" > 
    <img src="/llr/theme/delete.gif" width="16" height="16" alt="Map Red X" > 
</s:a> 

は今、あなたは、これは私が私の問題を解決するために何をしたかで、今後Google社員のためにdeleteShipperFromChosenShipperViewList()機能

function deleteShipperFromChosenShipperViewList(url){ 
    if (confirmDelete()) {   
    document.forms[0].action = url; 
    document.forms[0].submit(); 
    } 
} 

+0

これは私の問題を解決するとは思わない。私は自分の問題が何であるかを明確にしようと私の質問を編集しました。 – ponder275

関連する問題