我当前的问题是关于动态更新上下文信息FormInjector
,我之前的问题在 Tapestry 5 中更新表单内的区域 https://stackoverflow.com/questions/2966750/updating-a-zone-inside-a-form-in-tapestry-5可能包含有用的背景信息。
我在我的模板中添加了以下内容。
<div t:type="FormInjector" t:id="injector" t:context="item.id"/>
以及我的组件类中的以下内容。
@OnEvent(component = "injector")
Block loadItemFields(String id) {
item = itemRepository.find(id);
return itemFieldsBlock;
}
一切工作正常,出现新的表单字段,但搜索始终使用相同的内容完成id
。我想改变id
在触发事件之前使用 JavaScript,但我不知道如何实现这一点。
如果需要其他信息,我很乐意提供。
使用上下文参数传递动态值不是我的第一选择。 (这FormInjector
组件生成一个 URL 来触发事件处理程序,然后该事件处理程序包含上下文 - 但是,这是在组件呈现时完成的,并不意味着是动态的。)
我将摆脱上下文参数并找到一种不同的方式来提交值。一种可能是通过 AJAX 提交表单并在回调中触发注入:
this.myFormElement.observe('change', this.onChange.bindAsEventListener(this));
...
onChange: function(event) {
this.myFormElement.form.request({
onSuccess: this.afterFormSubmitted.bind(this)
});
},
afterFormSubmitted: function() {
this.formInjector.trigger();
}
这样,当您触发表单注入时,表单元素的值已在服务器端设置,并且您可以在注入事件处理程序中使用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)