2

デザインをご紹介します。

JSPの各フィールドは、によって作成されMapます。ラベル名、入力タイプ(ドロップダウンまたはその他)、入力値、デフォルト値などが、たとえばに追加されMapますMap nameAttributesGeneralWriter writer私がアクセスできない別のクラスがあります。このクラスは、から値をMap取得し、それらを解析して適切なHTMLコードを記述します。

マップを書き込んだ後、writer.writeSelectBox(nameAttributes);が呼び出されます。

ここで、要件は次のとおり
です。ドロップダウンメニューがあり、選択した値に応じて、他のいくつかのドロップダウンメニューが無効(UIに表示されますが、変更できません)または有効になります。追加されたフィールドのHTMLコードを記述していないため、関数呼び出しイベントを記述して作業を行うことはできません。

onMouseOutに見られるように、フィールドからのイベントでJS関数が呼び出されることを確認しました"View Source"。そこで、フィールド値を確認して他のドロップダウンメニューに影響を与えるために、そこにコードを記述できると思いました。しかしalert、JS関数を(チェックするためだけに)書き込んだ場合、警告は表示されません。つまり、関数が呼び出されず、有効化/無効化コードを記述できません。

その仕事を成し遂げる方法はありますか?有効化と無効化は、ユーザーがドロップダウンの1つで何を選択するかによって異なります。

サンプルコード:

<%
Map nameAttr = new HashMap();   
nameAttr.put(GeneralConst.INPUT_MESSAGE, Const.MSG_FIELD_NAME);
//.....

writer.writeAllSelectBox(nameAttr);
%>

緊急の助けが必要です、ありがとう。

4

1 に答える 1

0

JSPページの[ソースの表示]では、一部のフィールドにonChangeイベントやonMouseOutイベントなどが追加されており、GeneralWriterクラスでは、これらのものが次のようにアウトストリームに書き出されていたことがわかります。

out.println("<td nowrap><select name=" + strName);
out.println(" style=\"width:" + strWidth + "px\"");
out.println(" onChange ="+onChange);

そこで、既存のコードを使用するのではなく、独自のメソッドを追加して、onChangeイベントを導入しました。表示される" onChange"変数(右側の変数)はjava.lang.String型であり、これは、特定のJSPに対して呼び出す動作や特定の関数に関して、JSP自体から渡す必要がありました。

今、私はJSPに以下を追加しました

<body>
  <script>
    window.onload = setModeForPara2('MEMBERTYPE','MEMBERSTATE','CKSTATUS') ;
    function resetevent(uri){
      setModeForPara2('MEMBERTYPE','MEMBERSTATE','CKSTATUS') ;
    }
  </script>
</body>

ここで、パラメーターはドロップダウンメニューの名前であり、setModeForPara2()私の要件が元の投稿で述べられているように無効化/有効化するJS関数です。MEMBERTYPEが0であるかどうかをチェックし、無効状態と灰色をMEMBERSTATEおよびCKSTATUSドロップダウンメニューにレンダリングします。それ以外の場合は、それらを有効にして灰色を削除します。
これresetevent(uri)は、[リセット]ボタンをクリックして無効状態を[状態]フィールドと[ステータス]フィールドに表示するときに呼び出されるJS関数でもあります。

このようにして、setModeForPara2()関数は次の場合に呼び出され
ます。1.ページが読み込まれる、
2。最初のドロップダウンの値(MEMBERTYPE)が変更される、
3。[リセット]ボタンがクリックされる。

解決しました。

于 2013-04-02T10:10:23.333 に答える