我在Tapestry 5.3.6上遇到了一个大问题。
我有一个带有自定义简单mixins的表单,暗示表单的id无法被修改:/
所以我有这个:
<form t:type="form" t:id="formId" t:mixins="aMixins" t:zone="zoneID">
<t:errors/>
<input t:type="TextField"/>
<a t:type="LinkSubmit" t:id="linkId"/>
</form>
<t:zone t:id="zoneID">
Something....
</t:type>
当我使用区域表单属性时,不会显示验证错误,如何在不将表单包含到区域中的情况下使验证错误显示错误?
我不能将这个表单包含在一个区域中,因为当我的mixin初始化时,它会在一些DOM元素上放置一些侦听器,当我提交表单时,表单会重新加载(因为区域)并重新加载mixin ,它会在新的DOM元素上添加更多的侦听器,并且在提交之后会触发相应的侦听器捕获的事件,但是一些侦听器链接到不存在的元素并且js崩溃。
非常感谢你的回应
答案 0 :(得分:0)
1。
我有一个带有自定义简单mixins的表单,暗示了表单的ID 无法修改
这并非暗示。也许,这是你的要求吗?
如果没有,那么将mixin插入到ajax渲染中,你需要使mixin更灵活。
在YourMixin课程中:
@InjectContainer
private ClientElement element;
void afterRender() {
String elementId = element.getClientId();
JSONObject spec = new JSONObject();
spec.put("elementId", elementId);
jsSupport.addScript("new MixinHandler(%s)", spec.toString());
}
这只是一个提示,请查看完整示例的自动完成实现(类,javascript)。
2。
当我使用区域表单属性时,验证无效
这听起来很可疑..我猜验证错误是不可见的,因为您没有更新表单本身及其<t:errors/>
标记。
如果您将断点设置为页面中表单的FAILURE和SUCCESS事件处理程序,则可以验证这一点(请参阅org.apache.tapestry5.EventConstants)。