我的表单上的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>
答案 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而不是完整的表单提交来检索学校列表。