2011-08-10 10 views
1

別のドロップダウンリストの選択の変更によってonChangeイベントが発生したときにドロップダウンリストを更新しようとしています。strutsでajaxを使用して(onChangeイベントが発生したとき)jspページのコンテンツを更新しようとしたときの問題

私は心の中で2つの方法があります:

1)私はしかし、その場合には、私はアクションが実行されたとき、それは更新されませんが、非同期アクションを呼び出すことができたものの、道場を使用して非同期呼び出しを使用してみましたドロップダウンリストの内容。私はドロップダウンの内容を更新するいくつかのコードが不足していると思います。ここ

は符号である:

JSPページ:

<%@taglib uri="/struts-tags" prefix="s" %> 
<%@taglib uri="/struts-dojo-tags" prefix="sd" %> 

<s:url id="scriptURL" action="getLists" /> 
<sd:a href="%{scriptURL}" listenTopics="getLists" formId="dayReport" showLoadingText="Working..."/> 

<s:form action="viewDayReport" id="dayReport"> 
<s:select label="Customer " name="customer" headerKey="0" headerValue="Select" list="customerList" onchange="dojo.event.topic.publish('getLists');"/> 
<s:select label="Contact " name="contact" headerKey="0" headerValue="Select" list="contactList" onchange="dojo.event.topic.publish('getLists');"/> 
<s:select label="Employee " name="employee" headerKey="0" headerValue="Select" list="employeeList" onchange="dojo.event.topic.publish('getLists');"/> 
<s:select label="Stage " name="stage" headerKey="0" headerValue="Select" list="stageList" onchange="dojo.event.topic.publish('getLists');"/> 
<s:select label="Type "  name="type"  headerKey="0" headerValue="Select" list="typeList"  onchange="dojo.event.topic.publish('getLists');"/> 
<sd:datetimepicker label="Date" name="date" displayFormat="dd/MM/yyyy"        onchange="dojo.event.topic.publish('getLists');"/> 
<s:submit value="View Report(s)"/> 
</s:form> 

アクション:

The action sets all the 5 lists required in the <s:select> tags in the page. 
The lists are getting generated properly, I have checked. 

ストラットの設定:

<struts> 
<!-- Add your configuration elements here --> 
<package name="Deutek.admin" extends="struts-default" > 
    <result-types> 
     <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" /> 
    </result-types> 
    <action name="dayReportPage" class="admin.dayReportAction"> 
     <result type="tiles">dayReport</result> 
    </action> 

    //This is the action mapping which maps the action in use.(Notice that the above action is also forwarding to the same page, it is the action which first time displays the page.) 

    <action name="getLists" class="admin.getLists"> 
     <result type="tiles">dayReport</result> 
    </action> 
</package> 
</struts> 

2)2方法私はグーグルで見つけたrequi jspページで次のJavaスクリプトを再入力してください。

function retrieveURL(url) 
{ 
if (window.XMLHttpRequest) 
{ 
// Non-IE browsers 
      req = new XMLHttpRequest();  
      req.onreadystatechange = processStateChange; 
      try { 
       req.open("GET", url, true); 
      } catch (e) { 
       alert(e); 
      } 
      req.send(null); 
     } else if (window.ActiveXObject) { // IE 

      req = new ActiveXObject("Microsoft.XMLHTTP"); 
      if (req) { 
       req.onreadystatechange = processStateChange; 
       req.open("GET", url, true); 
       req.send(); 
      } 
     } 
    } 

ここで、 "req.open"には "url"がパラメータとして必要です。ここでは、最初のメソッドで言及したアクションクラスが呼び出されるように、何がURLであるべきかを理解していません。

アクションクラスによって設定された新しいリストでドロップダウンリストを更新する最初の方法で、どのコードが欠けているか教えてください。

また、2番目の方法ではURLを指定する必要があります。

あなたの意見ではどの方法が良いですか?

可能な限りお手伝いください。

ありがとうございます!

+0

私はすべての必要な情報を提供しました。私が逃した場合は、指摘してください。ありがとう!! – kanishk

+0

struts2 dojoタグは現在中止されており、一般的には避けてください。あなたはajaxを使用したい場合、この質問はすべての拠点をカバーしています:http://stackoverflow.com/questions/7005056/struts2-update-second-select-based-on-first-select-value-using-javascript-and- jq – Quaternion

+0

私が示唆した答えは、懸念をうまく分割しているので良いです。 struts2コミュニティはstuts2-jsonの質問に非常に簡単に対処できます。 jQueryコミュニティはjQuery-jsonの質問に非常に簡単に答えることができ、最終的にソリューションをより速く得ることができます。 – Quaternion

答えて

1

ベストな方法は、struts2公式サイトからstruts2-showcaseアプリケーションをダウンロードし、それをあなたのtomcatに展開することです。 彼らは、相互接続された2つのコンボボックス/ドロップダウンのようなあなたのケースを含んでStruts2のドメイン内部の作業をどのようにいろいろなことを示す例がたくさんあるここ

がへのリンクが何であるかは、ショーケース・アプリケーションでAjaxのタブの下に見つけることができます探しています

サンプルアプリケーションをダウンロード

Showcase application

+0

あなたの返信をありがとうumesh !! 私は例を見て、何か問題があった場合に戻ってきます。 ありがとうございます! – kanishk

関連する問題