Решите мою проблему, используя commandButton.
<h:form>
<p:panel id="account">
<h:panelGrid columns="2" columnClasses="column" cellpadding="5">
<h:outputText value="Balance: " />
<p:inplace editor="true">
<p:ajax event="save" onsuccess="saveAccount.enable();"/>
<p:inputText value="#{accountManagedBean.account.balance}" required="true"/>
</p:inplace>
<h:outputText value="Credit limit: " />
<p:inplace editor="true" >
<p:ajax event="save" onsuccess="saveAccount.enable();"/>
<p:inputText value="#{accountManagedBean.account.creditLimit}" required="true"/>
</p:inplace>
<h:outputText value="Comment: " />
<p:inplace editor="true">
<p:ajax event="save" onsuccess="saveAccount.enable();"/>
<p:inputText value="#{accountManagedBean.account.comment}"/>
</p:inplace>
<p:commandButton title="Save account changes" value="Save" widgetVar="saveAccount" action="#{accountManagedBean.saveAccount}" oncomplete="saveAccount.disable();" />
</h:panelGrid>
</p:panel>
<script type="text/javascript">$(document).ready(function() {saveAccount.disable();});</script>
</h:form>
Небольшие изменения в управляемом компоненте:
public void saveAccount() {
accountController.update(account);
// extract info for page
// extractAccount();
}
Explenation. Я создаю commandButton с заголовком «Сохранить», который отключается при загрузке страницы. После редактирования одного или нескольких значений учетной записи на странице кнопка активируется кодом:
<p:ajax event="save" onsuccess="saveAccount.enable();"/>
После нажатия кнопки «Сохранить» он отключается - я использую атрибут oncomplete:
oncomplete="saveAccount.disable();"
Были проблемы с отключением атрибута commandButton , поэтому я просто код jQuery, который отключает кнопку после загрузки страницы:
<script type="text/javascript">$(document).ready(function() {saveAccount.disable();});</script>
Но вопрос о проблеме с сохранением встроенных значений в БД все еще актуален.