我的表单上的Spring WebFlow2中的每次转换都需要隐藏按钮吗?

时间:2012-09-05 13:11:16

标签: java javascript spring spring-mvc spring-webflow

我的表单上的Spring WebFlow2中的每次转换都需要隐藏按钮吗?

如果这是真的,我开始不喜欢Spring WebFlow2。有人告诉我,我需要一个隐藏的按钮,用于我想要的表格。示例如果我有一个提交和重置的表单,我知道我应该使用两个按钮。

但是如果我有一个需要启动转换以在表单上加载某些数据的表单,我真的需要一个按钮用于每种转换类型吗?我会发现这很疯狂,但这是真的吗?

他是我的商店。我有一个用户开始填写的表单,一旦用户点击单选按钮,我需要将一些学校加载到用户选择的下拉列表中。我发现这样做的唯一方法是使用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>

1 个答案:

答案 0 :(得分: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();
}

(我不是发誓这是确切的语法,但希望你能得到这个想法。)

另一个选择是提前将所有学校加载到页面中,然后在JavaScript中只需切换显示哪些学校。

最后,您可能需要调查using AJAX而不是完整的表单提交来检索学校列表。