Tapestry学习十三:关于组件(八)submit组件

本文介绍如何使用Tapestry框架处理表单提交事件,包括submit组件的应用、事件处理方法的设计及页面跳转实现。此外还探讨了多个submit按钮的情况及如何避免返回值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

}

 
注:上面这个例子就算你累死也不能正常使用。原因是这个狗日的Tapestry的版本问题,他奶奶的。不知道这个作者用的是5.0几,反正最新的版本的@Eventvalue默认是action。但是submit的事件触发的是selected。所以要在注释上加value=selected”。这是比较令人懊恼的,就这一点小错误可能会浪费半天的时间。关于form事件的优先级:prepareForSubmit> prepare> validate> 提交按钮的事件(select)> success>form本身处理的事件(submit)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值