Java @EventListener&;IRequestCycle.getResponseBuilder.updateComponent未更新组件

Java @EventListener&;IRequestCycle.getResponseBuilder.updateComponent未更新组件,java,html,tapestry,event-listener,Java,Html,Tapestry,Event Listener,我的申请有问题,我想做的是当有人将表单上的shopStatus字段更改为Pass时,我希望它将我的字段shoppapprovaldate更新为必填字段。我正在为此使用以下事件侦听器 @EventListener(targets="shopStatus", events="onchange") public void onLicenseStatusChange(IRequestCycle cycle) { cycle.getResponseBuilder().updateComponent

我的申请有问题,我想做的是当有人将表单上的
shopStatus
字段更改为
Pass
时,我希望它将我的字段
shoppapprovaldate
更新为必填字段。我正在为此使用以下事件侦听器

@EventListener(targets="shopStatus", events="onchange")
public void onLicenseStatusChange(IRequestCycle cycle) {
    cycle.getResponseBuilder().updateComponent("shopStatus");
    cycle.getResponseBuilder().updateComponent("shopApprovalDateRequired");
    cycle.getResponseBuilder().updateComponent("shopApprovalDate");

}
这是我在这里使用的html

<td valign="center" align="left" class="rightTD" height="30" >
         <span jwcid="@If" condition="ognl:company.shopStatus == @valueobject.ShopStatus@Pass" renderTag="literal:false">
            <input jwcid="shopApprovalDateRequired@CustomDatePicker" disabled="ognl:disabled || isShopApprovalDateDisabled()"
            value="ognl:company.shopApprovalDate" displayName="message:company.shopApprovalDate" validators="validators:maxDateToday,required" />
         </span>
         <span jwcid="@Else" renderTag="literal:false">
            <input jwcid="shopApprovalDate@CustomDatePicker" disabled="ognl:disabled || isShopApprovalDateDisabled()"
            value="ognl:company.shopApprovalDate" displayName="message:company.shopApprovalDate" validators="validators:maxDateToday" />
         </span>
        </td>

问题是,如果我将
shopStatus
更改为
Pass
什么都不会发生,但是如果我保存页面并重新加载页面,则
shopprovaldate
设置为强制,因此html代码可以工作,这就像当
shopStatus
更改时,
@EventListener
没有更新
shoppapprovaldate
!我已经调试了代码,它击中了听众,但什么都没有发生


有人对此有什么想法吗?

这是因为您需要对调用@IF@Else而不是实际组件本身的东西调用更新

如果您在@If@Else之外添加了一个函数,并在事件侦听器中调用该函数,那么应该是这样的


看起来像是tapestry的旧版本,4.?tapestry-framework-4.1.6,这有什么关系?
<div jwcid="licenceAuthRequiredDiv@Any">
<td valign="center" align="left" class="rightTD" height="30" >
     <span jwcid="@If" condition="ognl:company.shopStatus == @valueobject.ShopStatus@Pass" renderTag="literal:false">
        <input jwcid="shopApprovalDateRequired@CustomDatePicker" disabled="ognl:disabled || isShopApprovalDateDisabled()"
        value="ognl:company.shopApprovalDate" displayName="message:company.shopApprovalDate" validators="validators:maxDateToday,required" />
     </span>
     <span jwcid="@Else" renderTag="literal:false">
        <input jwcid="shopApprovalDate@CustomDatePicker" disabled="ognl:disabled || isShopApprovalDateDisabled()"
        value="ognl:company.shopApprovalDate" displayName="message:company.shopApprovalDate" validators="validators:maxDateToday" />
     </span>
    </td>
</div> 
@EventListener(targets="licensingStatus", events="onchange")
public void onLicenseStatusChange(IRequestCycle cycle){
    cycle.getResponseBuilder().updateComponent("licenceAuthRequiredDiv");
}