当前位置: 首页 > 面试题库 >

在Tapestry 5中更新表单内的区域

黄泰宁
2023-03-14
问题内容

我有一个Zone里面的FormZone用一个包含我想绑定到父母的输入字段的块更新Form。不幸的是,这似乎并没有像我希望的那样容易,因为我收到以下错误消息。

The Description component must be enclosed by a Form component. [at classpath:...Page.tml, line 100]

.tml下面是源代码的简化版本。

<t:form t:id="editForm" t:context="item.id">
    <table>
        <tr>
            <th>Name</th>
            <td><t:textField value="item.name"/></td>
        </tr>
        <t:block t:id="block">
            <tr class="person">
                <th>Description</th>
                <td><t:textField t:id="description" value="item.description"/></td>
            </tr>
         </t:block>
         <t:zone t:id="itemZone" id="itemZone"/>
         <t:actionlink t:id="item" zone="itemZone">Click me!</t:actionlink>
    </table>
</t:form>

有没有办法进行绑定,如果没有,还有其他替代方法吗?


问题答案:

这个答案已经过时,您可以使用 Tapestry
5.2上
的常规区域功能添加表单元素。不过,此方法仍然可以正常使用。

原始答案,对于Tapestry 5.0和5.1有效:

FormInjector组件允许您将表单元素添加到现有表单中。不过,您将必须编写一些自定义JS来触发表单注入。

在您的TML中:

<div t:type="FormInjector" t:id="injector" position="below" />

您可以像这样在JS代码中触发注入:

$('theClientIdOfMyFormInjector').trigger();

您可以在表单内通过其类名(myForm.down('div.t-forminjector'))找到注射器DIV 。

组件类:

@Inject
private Block formFieldsBlock;

@OnEvent(component = "injector")
Block loadExtraFormFields() {
    return this.formFieldsBlock;
}


 类似资料:
  • 问题内容: 我在使用React表单和正确管理状态时遇到麻烦。我有一个形式为模式的时间输入字段。初始值在中设置为状态变量,并从父组件传递。这本身工作正常。 当我想通过父组件更新默认的start_time值时,就会出现问题。更新本身通过发生在父组件中。但是在我的表单中,默认的start_time值从不更改,因为它仅在中定义一次。 我尝试过通过强制进行状态更改,该更改确实有效,但给了我错误。 所以我的问

  • 我知道我可以在我的表单上创建一个绑定,以便能够访问和更新下表中的记录: 但这是通过从路由传递一个id来完成的 所以只有当我只需要向用户显示和更新一条记录/行时,这才有用。基本上就像一个博客条目,有一个标题,正文为一行。我只是想用户去的路线 /nav/edit/和它显示所有行的导航作为一个可编辑的输入发送回数据库。 我的问题是,如何从表中检索多行,并将它们的值显示到输入字段中,当用户编辑其字段时,这

  • 我正在使用Adobe Acrobat DC Pro,我正在使用javascript控制台对多个字段的“默认值”进行更新。在控制台中运行时,下面一行会更新字段“FirstName”。如果我查看字段的属性,默认值已更新,但预览表单时不会显示。 这是为什么?

  • 问题内容: 我有一个需要更改的地方(添加2列),然后更新同一张表。 这是我尝试过的查询: 我需要一次运行上述两个查询。 我正在使用Talend ETL工具,在这里我们有一个组件tMssqlrow,它允许我们运行多个查询(我在单个组件中使用10到15个更新查询)。 但是上面的查询不起作用。 我在数据库Microsoft SQL中进行了测试。我收到以下错误: 消息207,第16级,州1,第5行 无效的

  • Tapestry5 和 jQuery 集成。 使用 jQuery 以极少的兼容问题完全替换 Prototype 和 Scriptaculous 库。

  • 我有一个网络应用编程接口,多个列表,和一个从网络应用编程接口查询数据的函数。我已经设法手动更新列表,一次一个。然而,数据有多个列(列表将包含列的数据),并且有38个列表并手动调用函数来更新它们是很麻烦的。我设计了一个简短的for循环来迭代列表,并相应地更新它们。但是,更新后的列表不会返回;或者甚至没有更新。如何在代码中修复此问题?请参阅下面的代码,虽然我不能提供API上的数据: =========