0

我对 Tapestry 5.3.6 有一个大问题。

我有一个带有自定义简单混合的表单,这意味着无法修改表单的 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 元素上放置一些监听器,当我提交我的表单时,表单会被重新加载(因为 zone)并重新加载 mixin,这添加在新的 DOM 元素上增加了一些侦听器,并且在提交之后触发了一个事件,该事件被相应的侦听器捕获,但是一些侦听器链接到不存在的元素并且 js 崩溃。

非常感谢您的回复

4

1 回答 1

0

1.

我有一个带有自定义简单混合的表单,这意味着表单的 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());
}

这只是一个提示,请查看 Autocomplete implementation (class, javascript) 以获取完整示例。

2.

当我使用区域表单属性时,验证不起作用

这听起来很可疑。我猜验证错误是不可见的,因为您没有更新表单本身及其<t:errors/>标签。

如果您在页面中的表单的 FAILURE 和 SUCCESS 事件处理程序中设置断点,则可以验证这一点(请参阅 org.apache.tapestry5.EventConstants)。

于 2013-04-17T20:24:10.367 回答