我的 .tml 文件中有这样的内容:
<t:beaneditform t:id="adForm" object="editableAd"
reorder="actiontype,shops,movies,streams,widgets" ....
我的问题是如何访问(引用)actionType,它是 .java 文件中的枚举(实际上是 SELECT)?我只需要在用户更改此选择(下拉列表)的值时处理事件,显然是在提交表单本身之前。
如果这样的事情对我有用......
@OnEvent(component = "adForm.actionType", value=EventConstants.VALUE_CHANGED)
public void actionTypeValueChanged(String value) {
log.info("value is: " + value);
}
最佳答案
要使用客户端 Select html 组件中更改的值进行更新,请在模板文件中包含一个带有 t:zone
属性的 Tapestry 选择组件 (即,在您的情况下,它可以指向任何虚拟区域,仅当您需要在值更改时更新区域时才需要正确设置)
同时将t:value
属性设置为页面\组件java文件中的枚举变量,通常该变量将使用tapestry的@Property
进行注释。
示例:
<t:select t:id="myEnumVariable" t:zone="dummyZone" t:value="myEnumVariable"/>
myEnumVariable
用于引用类的变量并充当 ID(即实际字符串 myEnumVariable 用作 id),这是不必要的,但这样更具可读性和可维护性)
public class MyClass{
@Property
private MyEnum myEnumVariable;
@OnEvent(component = "myEnumVariable", value=EventConstants.VALUE_CHANGED)
public void actionTypeValueChanged(**MyEnum** newValue) {
this.myEnumVariable = newValue; // <<<<<<
log.info("value is: " + myEnumVariable );
}
}
关于java - 如何引用Java中BeanEditForm(tapestry5)中使用的bean的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14755531/