1

そのタイトルが正しく表現されているかどうかはわかりません。私がやろうとしていることを説明しましょう:

フォームを含むファイルnew.jspがあります

<s:form id="newdep" name="newdep" theme="simple" action="submitForm" >

このフォームには選択ボックスがあります。

<s:select list="apps" name="app" onchange="javascript:show_details();return false;" />

私は ajax に Dojo を使用しています。

function show_details() {
    dojo.event.topic.publish("show_detail");
}

また、このフォーム内には次のものがあります。

<s:url id="d_url" action="showComp" /> 
<sx:div id="details" href="%{d_url}" listenTopics="show_detail" formId="newdep" showLoadingText=""/>

これはcomp.jspaction でオンザフライで呼び出しますshowComp

「アプリ」選択ボックスでの選択に応じて、いくつかのテキストフィールドが表示されます。

より具体的には、アプリが選択されると、lstListそのアプリに固有のハッシュマップが (CompActionのアクション クラス内にshowComp) 作成され、次のように表示されます。

<s:iterator value="lstList">   
  <s:property value="key" />   
  &nbsp;&nbsp;&nbsp;
  <s:textfield name="value" value=""/> <!-- LINE I'M ASKING ABOUT -->
  <s:iterator value="value">     
    <br> 
  </s:iterator> 

正しくないと思うので、テキストフィールドの行を強調表示しました。基本的に、私がやりたいことは次のとおりです。

  1. ユーザーにドロップダウンからアプリを選択してもらいます。(終わり)
  2. comp.jspが呼び出され、それぞれのハッシュマップ + テキスト フィールドから関連するラベルが表示されます。(終わり)
  3. ユーザーが送信ボタンをクリックすると、テキストフィールドへのユーザーのエントリがハッシュマップに保存されます (機能しません) 。

この時点で、送信をクリックするとユーザーが に送信されることに注意してくださいresults.jsp

このページから、より大きなアクション クラスのデータに簡単にアクセスできますFormActionCompActionしかし、 (もう一度言いますが、ajax アクションのアクション クラス) からデータ (ハッシュマップなど) にアクセスする方法がわかりません。

4. results.jsp からハッシュマップ データにアクセスします (これも機能しません) 。

私の自然な本能は使用することでした

<s:property value="%{lstList}" /> 

運がresults.jsp悪い。私はストラットにはかなり慣れていませんが、良い感触を得られるように最善を尽くしています。何かアドバイス?

4

1 に答える 1

1

私はあなたを手に入れたかどうかわかりませんが、私は助けようとします. 、特に強調表示した行を見るcomp.jspと、同じ名前の「値」で多くの入力を作成しているように見えます(<s:textfield />「値」では変数としてではなく、単純な名前として機能するため)、ハッシュマップ エントリごとに 1 つ。によって生成された HTML コードを参照することをお勧めしますcomp.jsp。つまり、同じ名前のフィールドが多数ある場合、これらのフィールドのすべての値がString[]アクションで としてマップされます。したがってString[]、アクションで a を定義すると、すべての値が取得されます。

わかりましたが、名前も必要です。つまり、すべてのフィールドの名前と値のアクションを取得する必要があります。そのためには、最初に を変更し、 /> をcomp.jsp忘れて<s:textfield ...、yourserlf で html コードを生成する必要があります。

<s:iterator value="lstList">   
    <input type="text" name="_<s:property value="key" />" value="<s:property value="value" />" />    
    <br> 
</s:iterator> 

すべてのフィールド名が「_」で始まることに注意してください。

次に、アクションで、リクエストにアクセスして、リクエスト内のすべてのパラメータのリストを取得し、「_」で始まるパラメータを取得して、その名前と値でハッシュマップを自分で作成する必要があります。

于 2012-06-12T22:29:24.310 に答える