4

私はSpring2.5アプリケーションを持っており、フローのいくつかのページは完全に機能しています-それらは私のflow.xmlに従って進行します。「壊れた」ページには、次の形式の送信があります。

<input type="image" name="_eventId_submit" src="<c:url value="images/continue.png" />" />

このページのフロー定義は正しいように見えます。

<view-state id="coverages" view="tiles.coverages" model="rtrForm">
    <on-entry>
 ...
    </on-entry>
    <transition on="submit" to="policyVehicleDetailsDecisionForward">
        <evaluate expression="coverageFormAction.bindAndValidate" />
        <evaluate expression="coverageFormAction.evaluateCoverages(rtrForm)" />
    </transition>
</view-state>

mainFlowAction.evaluateCoverages(...)にデバッグステートメントがあり、これはログファイルに表示されませんが、例外も表示されません-誰かがここからどこに行くべきか知っていますか?リモートデバッグを行うためにEclipseをTomcat6.0.33にアタッチしましたが、まだ例外が発生していません...この時点で困惑しており、これを理解する方法がわかりません-ヘルプまたは提案を歓迎します。

したがって、これをさらに数ステップ進めて、QuoteFormAction.bindAndValidate()メソッドをオーバーライドしましたが、残念ながら、このメソッドがログに呼び出されていないので、この時点でフォームはそれを呼び出さないでください...私は、機能するすべてのページに使用しているのと同じパターンを使用しています。私はフォームを省略しました-多分私は明白な何かを見落としています:

<form id="rtrForm" action="/rtrSite/main.svc?execution=e1s5" method="post">
...
<select name="quoteForm.policyLevelCoverages.towing" class="violationType" id="TOWING"  validate="selectOneOption" req="">
...
<select name="quoteForm.vehicleLevelCoverages[0].rental" class="violationType" id="RENTAL"  validate="selectOneOption" req="">
...
<input type="image" name="_eventId_submit" src="images/continue.png" />
<input type="image" name="_eventId_save" src="images/save.png" value='Save -n- Return' />
<input type="image" src="images/back.png" name="_eventId_back" value='Back' />
<input type="reset" id="reset" />
</form>

JSPフォームの生成:

<c:forEach var="policyCoverageList" varStatus="policyCoverageStatus" items="${quoteForm.coverages.jspCoverageCodesPolLevel}">

          <spring:bind path="quoteForm.policyLevelCoverages.${fn:toLowerCase(policyCoverageList.coverageCode)}" >
           <select name="${status.expression}" class="violationType" id="${policyCoverageList.coverageCode}"  validate="selectOneOption" req="">
                <c:if test="${policyCoverageList.isRequired == 'N'}">
                   <option value="-1"><spring:message code="coverage.decline" /></option>
                 </c:if>
                 <c:forEach var="policyCoverage" items="${policyCoverageList.limits}">
                     <option value="${policyCoverage.id}" <c:if test="${policyCoverage == 'TODO'}">SELECTED</c:if>>
                          ${policyCoverage.coverageLimits}
                      </option>
                  </c:forEach>
              </select>
           </spring:bind>

</c:forEach>
4

2 に答える 2

4

ロガーでデバッグレベルをオンにします

<logger
        name="org.springframework.webflow">
        <level value="debug" />
    </logger>

問題を理解するのに役立つコンソール/ログファイルにメッセージが表示されます

于 2014-07-16T16:59:15.373 に答える
0

"tiles.coverages"毎回ビューに戻っていますか?もしそうなら、私はあなたが何らかの種類のバインディング/検証エラーを抱えていると思います。jspに入れて、<form:errors path="*"/>それが本当かどうかを確認します。

編集:

これらの2つは両方ともnull以外を選択し、2つ目は空ではありませんか?だから

quoteForm.vehicleLevelCoverages[0].rental

VehicleLevelCoveragesリスト/配列に少なくとも1つの要素がありますか?

片側ではありません:

Spring Weblflow 2を使用していますか?あなたがbindAndValidateを行う必要がない場合は、とにかくそれを行います。

于 2012-04-05T02:57:56.120 に答える