2017-07-27 104 views
0
<tr:table id="UserTable" width="100%" ......> 
    <tr:selectBooleanCheckbox id="ctrl_select" value="#{user.isSelected}" autoSubmit="true" valueChangeListener="#{userAction.onUserSelected}" onchange="submit()"/> 
    <tr:inputText id="effDate" simple="true" value="#{user.effectiveDate}" disabled="#{!user.isSelected}"/> 

操作:基于业务逻辑的onUserSelect我正在设置生效日期。复选框取消勾选并检查其他字段变空

1:当我检查复选框时,它的submited和effDate被启用。
2:我清除日期
3:取消选中复选框。我可以看到日期及其禁用。
4.再次勾选复选框,日期字段已启用但是effDate为空。我不希望effDate为空白。我相信UpdateModel被调用。有没有办法不把值设置为空白?

回答

0

您正在渲染组件tr:inputText并更新相同的组件。我怀疑会工作。

因为该组件在更新时可能尚未添加到/存在于组件树中。这是因为在您尝试更新booleancheckbox时,组件可能不会添加到DOM树中。

因此,在底部使用不同的组件,例如面板或面板组并更新它。

JSF代码:

<tr:table id="UserTable" width="100%" ......> 
     <tr:selectBooleanCheckbox id="ctrl_select" value="#{user.isSelected}" 
     autoSubmit="true" valueChangeListener="#{userAction.onUserSelected}" 
     onchange="submit()" update="effDatePanel"/> 

<tr:panel id="effDatePanel"> 
    <tr:inputText id="effDate" simple="true" value="#{user.effectiveDate}" 
    disabled="#{!user.isSelected}"/> 
</tr:panel> 

希望它可以帮助!

+0

你有没有尝试过的代码,并帮助它? –

+0

我没试过这个。然而,我删除submit()和使用partialTrigger似乎工作正常。 tr:selectBooleanCheckbox上也没有更新属性 – Smruti

相关问题