为了解决上面的问题,我们需要一个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;
}