1

フォームのSpringWebFlow2のトランジションごとに非表示のボタンが必要ですか?

これが本当なら、私はSpringWebFlow2が好きではなくなり始めています。フォームに表示させたいトランジションごとに非表示のボタンが必要だと誰かが言っています。例送信とリセットを含むフォームがある場合、2つのボタンを使用する必要があることを理解しています。

しかし、フォームにデータをロードするためにトランジションを開始する必要があるフォームがある場合、トランジションタイプごとにボタンが本当に必要ですか?私はこれがおかしいと思うでしょうが、それは本当ですか?

彼は私の店です。ユーザーが入力を開始するフォームがあります。ユーザーがラジオボタンをクリックしたら、ユーザーが選択できるように、いくつかの学校をドロップダウンにロードする必要があります。これを行うために私が見つけた唯一の方法は、JavaScriptと非表示のボタンを使用してloadschoolトランジションタイプを開始することです。例:

これが最善の方法ですか?これが唯一の方法ですか?トランジションごとにボタンが本当に必要ですか?

私の流れ:

<view-state id="SchoolVisitReport" view="SchoolVisitReport.jsp" model="visit" >
<transition on="submit" to="addVisit">
<evaluate expression="flowActions.validateVisit(visit, messageContext)"/>
</transition>

<transition on="loadSchools" to="SchoolVisitReport" >
<evaluate expression="flowActions.initializeSelectableSchool s(visit)" result="flowScope.selectableSchools"/>
</transition>

<transition on="cancel" to="endState" bind="false"/>
</view-state>

私のJavaScript:

function loadSchools(strBorough)
{
alert("Loading Schools for borough " + strBorough);
document.visit._eventId_loadSchools.click();

}

私のラジオボタン:

<form:radiobutton tabIndex="9" onchange='loadSchools();' value="B" path="borough" />Bronx-X<BR>
<form:radiobutton tabIndex="10" onchange='loadSchools();' value="K" path="borough" />Kings-K<BR>
<form:radiobutton tabIndex="11" onchange='loadSchools();' value="M" path="borough" />Man.-M<BR>

だから誰かが私がこれをwebflow2で正しくそして最良の方法でやっているかどうか教えてもらえますか..ありがとう

次のコードを試しましたが、フォームが送信されません

<script type="text/javascript">
   Spring.addDecoration(new Spring.AjaxEventDecoration({
          elementId : "borough",
          formId : "visit",
           event : "onChange",
           params : {
                     _eventId : "loadSchools",
                      fragments : "body"}
                    }));
</script>
4

1 に答える 1

0

いいえ、トランジションにアクセスするために非表示のボタンは必要ありません。フロー実行 URL を読み込んで、_eventId=loadSchoolsパラメーターに渡すだけです。例:

window.location='${flowExecutionUrl}&_eventId=loadSchools'

編集: フォーム フィールドも渡す必要があるため、次のような JavaScript フォーム送信を行う必要があると思います。

function loadSchools(strBorough)
{
    var form = document.forms['yourFormId'];
    form.elements['_eventId'].value = 'loadSchools';
    form.submit();
}

(これが正確な構文であると断言しているわけではありませんが、うまくいけば、アイデアが得られることを願っています。)

もう 1 つのオプションは、事前にすべての学校をページにロードし、JavaScript で表示する学校を切り替えることです。

最後に、完全なフォーム送信ではなくAJAX を使用して調査し、学校のリストを取得することをお勧めします。

于 2012-09-05T13:31:22.827 に答える