我有Spring 2.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附加到Tomcat 6.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>
答案 0 :(得分:2)
在记录器中打开
上的debuglevel<logger
name="org.springframework.webflow">
<level value="debug" />
</logger>
您将在控制台/日志文件中看到可帮助您找出问题的消息
答案 1 :(得分:0)
每次都返回"tiles.coverages"
视图吗?如果是,我会假设您遇到某种绑定/验证错误。在jsp中放入<form:errors path="*"/>
以查看是否属实。
编辑:
这两个是否都选择非空,第二个不是空的?
quoteForm.vehicleLevelCoverages[0].rental
vehicleLevelCoverages列表/数组中至少有一个元素?
一方不是:
您使用的是Spring Weblflow 2吗?如果你不需要做bindAndValidate它无论如何都会为你做。