动态修改Tapestry 5中的FormInjector上下文信息
我当前的问题是在FormInjector
动态更新上下文信息,我之前的问题在Tapestry 5中更新表单内的区域可能包含有用的背景信息。
我在模板中添加了以下内容。
以及我的组件类中的以下内容。
@OnEvent(component = "injector") Block loadItemFields(String id) { item = itemRepository.find(id); return itemFieldsBlock; }
一切正常,新的表单字段出现,但搜索始终使用相同的id
。 我想在触发事件之前用JavaScript更改id
,但我不知道如何实现这一点。
如果需要其他信息,我很乐意提供。
使用context参数传递动态值不是我的第一个选择。 ( FormInjector
组件生成一个URL来触发事件处理程序,然后包含上下文 – 但是,这是在组件呈现时完成的,并不是动态的。)
我将摆脱context参数并找到一种不同的方式来提交值。 一种可能性是通过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(); }
这样,当您触发表单注入时,表单元素的值已在服务器端设置,您可以在注入事件处理程序中使用它。