2017-07-27 105 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

相關問題