<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:当我选中其提交的复选框并启用effDate时
2:我清除日期
3:取消选中该复选框。我可以看到日期和残疾人
4.再次选中复选框,启用日期字段但是effDate为空。
我不希望effDate
为空。我相信UpdateModel被调用。有没有办法不将值设置为空白?
答案 0 :(得分: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>
希望它有所帮助!!