【问题标题】:Select model is lost when rendering a zone渲染区域时选择模型丢失
【发布时间】: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());
} 

如果我限制区域以便它只接受文本字段输入,它就可以正常工作(除了我的选择永远不会被禁用)。由于某种原因,我选择字段中的“模型”在此过程中丢失了。知道为什么会发生这种情况以及如何避免这个问题吗?

【问题讨论】:

    标签: java tapestry


    【解决方案1】:

    此代码未显示如何在 java 类中声明“fruitNames”。我猜“fruitNames”是一个变量,它只是丢失了。您应该使用 @Persist 注释“fruitNames”,这应该可以解决问题或将“fruitNames”声明为方法 (getFruitNames())。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-24
      • 2011-12-11
      • 2014-03-07
      • 2022-11-08
      • 2013-06-10
      • 2012-01-20
      相关资源
      最近更新 更多