Используйте <f:validateBean>
, где вы установите атрибут disabled
.
<h:inputText value="#{bean.input}">
<f:validateBean disabled="#{bean.draft}" />
</h:inputText>
Если это оценивает true
, это пропустит всю проверку bean-компонента для свойства, связанного со значением ввода. Вы должны только убедиться, что свойство boolean draft
установлено до того, как начнется этап проверки. Например.
<h:commandButton value="Save draft" action="#{bean.saveDraft}">
<f:param name="draft" value="true" />
</h:commandButton>
с участием
@ManagedProperty("#{param.draft}")
private boolean draft;
или если это bean-компонент с областью видимости, на котором @ManagedProperty
не будет работать:
public boolean isDraft() {
return "true".equals(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("draft"));
}
Другой способ — проверить в EL, нажата ли кнопка, определив наличие ее имени параметра. Например, со следующей формой и идентификатором кнопки
<h:form id="form">
<h:inputText value="#{bean.input}">
<f:validateBean disabled="#{not empty param['form:draft']}" />
</h:inputText>
<h:commandButton id="draft" value="Save draft" action="#{bean.saveDraft}" />
</h:form>
person
BalusC
schedule
15.09.2011