我的表单上的SpringWebFlow2中的每个转换都需要隐藏按钮吗

Do I need hidden buttons for each transition in Spring WebFlow2 on my form

本文关键字:隐藏 按钮 转换 表单 SpringWebFlow2 我的      更新时间:2023-09-26

我的表单上的SpringWebFlow2中的每个转换都需要隐藏按钮吗?

如果这是真的,我开始不喜欢SpringWebFlow2了。有人告诉我,我需要一个隐藏的按钮,用于我希望我的表单具有的每个转换。示例如果我有一个带有提交和重置的表单,我知道我应该使用两个按钮。

但是,如果我有一个表单需要启动一个转换来在表单上加载一些数据,我真的需要为每个转换类型都有一个按钮吗?我会觉得这很疯狂,但这是真的吗?

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

不,访问转换不需要隐藏按钮。您可以简单地加载流执行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中简单地切换显示的学校。

最后,您可能希望使用AJAX而不是完整的表单提交来检索学校列表。