【发布时间】:2017-08-29 16:08:38
【问题描述】:
我在使用 Tapestry 更新选择字段上的渲染时遇到问题。
我想禁用 2 个字段(1 个文本字段和 1 个选择字段),具体取决于我在另一个字段(也是一个选择字段)中选择的内容。我想立即渲染禁用的字段,因此我使用 Tapestry Zone 系统来执行此操作。
但是,当我从“fruitOrVegetableSelect”列表中选择一个项目时,选择字段出现以下异常:
Parameter 'model' of component fruit/Edit:fruitNames is bound to null. This parameter is not allowed to be null.
这是我在 tml 页面中的代码:
<t:zone t:id="fruitsForEveryOneZone" update="show">
<tr>
<td> <t:select
t:id="fruitName" t:model="fruitNames"
value="fruit?.fruitName"
disabled="getDisabledFruitField()" />
</td>
<td><t:textfield t:id="numberOfFruits"
value="fruit?.quantity"
disabled="getDisabledFruitField()" />
</td>
</tr>
</t:zone>
这是控制器中的代码:
@OnEvent(component = "fruitOrVegetableSelect", value = EventConstants.VALUE_CHANGED)
public Object updateFruitOrVegetable(Plant plant)
{
if (plant.getName().equals("Fruit"){
this.disabledFruitField=false;
else {
this.disabledFruitField=true;
}
return new MultiZoneUpdate("fruitsForEveryOneZone", fruitsForEveryOneZone.getBody());
}
如果我限制区域以便它只接受文本字段输入,它就可以正常工作(除了我的选择永远不会被禁用)。由于某种原因,我选择字段中的“模型”在此过程中丢失了。知道为什么会发生这种情况以及如何避免这个问题吗?
【问题讨论】: