У меня сложная форма, где пользователь заполняет несколько полей и имеет два варианта: сгенерировать файл лицензии или сохранить изменения. Если пользователь нажимает кнопку генерации файла лицензии без сохранения изменений, я представляю небольшой компонент с сообщением об ошибке, которое просит его сохранить до генерации лицензии. Чтобы отобразить компонент с предупреждающим сообщением, я хочу использовать ajax, чтобы избежать отображения всей страницы только для отображения компонента предупреждения. Конечно, если изменения были сохранены, тогда предупреждение не требуется, и я перенаправляю пользователя на другую страницу. У меня есть прослушиватель изменений в сменных полях, чтобы определить, когда было сделано изменение. То, что я не знаю, это условное выполнение. «Render с ajax, если несохраненная ИЛИ перенаправляется, если сохранена». Вот логикаПрограммно контролировать, какие компоненты должны обновляться ajax
if(saved){
redirect();
}else{
ajax.renderWarning()
}
--EDIT-- Я собираюсь добавить больше информации, потому что я понял, что я ухожу вещи слишком открытыми концами. Вот пример обновляемого поля.
<h:inputText name="computername3" value="#{agreement.licenseServerBeans[2].computerId}" valueChangeListener="#{agreement.fieldChange}">
<rich:placeholder value="Add Computer ID"/>
</h:inputText>
The() боб fieldChange метод
public void fieldChange(ValueChangeEvent event) {
change = true; //change is a boolean, obviously :P
}
Вот генерации лицензии кнопка JSF
<h:commandLink action="#{agreement.generateLicenseFile}">
<span class="pnx-btn-txt">
<h:outputText value="Generate License File" escape="false" />
</span>
</h:commandLink>
Вот метод generateLicenseFile()
public String generateLicenseFile(){
....//lots of logic stuff
return "/licenseGenerated.xhtml?faces-redirect=true";
}
Вернувшиеся нуль не обновит всю страницу? – Nacho321
Нет, если вы отправляете запрос ajax на первое место, нет. После этого вы полностью контролируете атрибут ''. Если вы не отправляли запрос ajax на первое место, он действительно «обновит» страницу (не потому, что он вернул «null», а просто потому, что на первом месте это синхронный запрос (не-ajax)). –
BalusC
Wooooow! Это полностью взорвало мой разум! Еще раз спасибо, BalusC! – Nacho321