gpt4 book ai didi

tapestry - Tapestry 子表单中的应用程序异常 - 参数绑定(bind)为 null

转载 作者:行者123 更新时间:2023-12-02 19:10:07 27 4
gpt4 key购买 nike

我想用 Tapestry5 创建一个子表单:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">

<t:TextField t:id="name" />
</html>

并像这样使用它:

<form t:type="form" t:id="testForm">
<t:testComponent name="name" />
<input type="submit"/>
</form>

TestComponent.java:

import org.apache.tapestry5.annotations.Parameter;
import org.apache.tapestry5.annotations.Property;

public class TestComponent {

@Parameter(required = true, allowNull = false)
@Property
private String name;
}

这样我就可以使用“name”的值,例如:

@Property
private String name;

void onSuccessFromTestForm() {
System.out.println(name);
}

但我得到的只是一个应用程序异常:

Render queue error in BeginRender[Index:testcomponent.name]: Failure reading parameter 'value' of component Index:testcomponent.name: Parameter 'name' of component Index:testcomponent is bound to null. This parameter is not allowed to be null.

有什么问题吗?

最佳答案

Tapestry 告诉您包含 FormTestComponent 的组件有一个值为 null 的属性“name”。所以你的问题不在你的 TestComponent 中,而是在更高的一个组件/页面中。为名称分配一个值,您应该会很好。

编辑

如果您打算允许人们通过您的表单分配值并在呈现页面时允许空值,请从您的 @Parameter 中删除 allowNull = false 测试组件。我假设您想强制用户在提交表单之前为名称字段提供值。这是通过添加 t:validate="required" 属性在输入字段上完成的,而不是在 @Parameter 上完成的。 @Parameter 告诉 Tapestry 实例变量如何与其容器交互,但它没有说明如何在其自己的组件中使用该变量。

关于tapestry - Tapestry 子表单中的应用程序异常 - 参数绑定(bind)为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18554128/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com