为了解决上面的问题,我们需要一个
submit
组件:
<input type="submit" t:type="submit" t:id="submitButton" value="Submit"/>
我们还需要一个对应的提交事件处理方法:
@OnEvent(component="submitButton")
void onSubmitButton()
{
System.out.println("Submit button was pressed!");
// TODO: Some code to actually register the user
}
运行应用,我看到类似这样的输出:
Setting user name: john
Setting password: abc
Setting gender: MALE
Setting subscribe: false
Submit button was pressed!
The form was submitted!
现在来完成这个页面的处理逻辑,我们只是模仿用户的注册
---
新建一个用户的类,并且把页面提交的值传给它,然后把这个用户做为一个
ASO
保存起来,页面转向
showall
。
@ApplicationState
private User user;
事件:
@OnEvent(component="submitButton")
Object onSubmitButton()
{
System.out.println("Submit button was pressed!");
User newUser = new User("John", "Johnson");
this.user = newUser;
return ShowAll.class;
}
好了,一切都完成了。但是你觉得这样会不会有问题
?
如果我们有个规则说不能在这个
submit
时间处理方法中返回任何值,怎么办
?
哈哈,你想到了,
submit
的处理方法是在
form
提交事件之前的。因此:我们可以在处理
form
提交事件的方法中处理(但是这个
submit
组件必须在
form
中)。
private Class nextPage;
Object onSubmitFromRegistrationForm()
{
System.out.println("The form was submitted!");
if (unsubscribe) subscribe = false;
return nextPage;
}
@OnEvent(component="submitButton")
void onSubmitButton()
{
System.out.println("Submit button was pressed!");
User newUser = new User("John", "Johnson");
this.user = newUser;
nextPage = ShowAll.class;
}
这里唯一要说的就是返回
null
的时候是重新刷新本页面。
如果有多个
submit
按钮呢?
这也很容易
只要在
class
中多定义一个事件处理方法就行了:
<input type="submit" t:type="submit" t:id="submitButton"
value="Submit"/>
<input type="submit" t:type="submit" t:id="resetButton"
value="Reset"/>
@OnEvent(component="resetButton")
void onResetButton()
{
userName = null;
password = null;
email = null;
gender = null;
subscribe = false;
}