Как обнаружить браузер назад и обновить нажатие кнопки в JSF 2.0 - PullRequest
1 голос
/ 19 марта 2012

У меня есть страница JSF, на которой у меня есть кнопка внутри формы.И я также делаю скрипт ошибки.

 <ui:composition template="./WEB-INF/templates/layout.xhtml">
     <ui:define name="title">#{newsAndAnnouncementAddUpdate.pageTitle}</ui:define>
     <ui:define name="content">
         <h:form id="news_advertisement_form" prependId="false"  >

             <h:commandButton id="Save"
                              value="#{label.save}"
                              actionListener="#{newsAndAnnouncementAddUpdate.checkForAddUpdate}"
                              disabled="#{newsAndAnnouncementAddUpdate.disable}"
                              styleClass="ButtonStyle"
                              style="position: relative;top: 100px;left: 330px" />

             <h:commandButton id="NoAfterSaveBtn"
                              action="#{newsAndAnnouncementAddUpdate.Cancel}"
                              style="background-color:#e6eff6; border: #e6eff6; visibility:hidden">
             </h:commandButton>
             <h:outputText value="#{newsAndAnnouncementAddUpdate.errorScript}" escape="false"/>

        </h:form>

        <h:commandButton id="YesAfterSaveBtn"
                         action="#{newsAndAnnouncementAddUpdate.stayOnpage}"
                         style="background-color:#e6eff6; border:#e6eff6; visibility:hidden">
        </h:commandButton>

    </ui:define>

</ui:composition>

Мой скрипт ошибок генерируется следующим образом

@ManagedBean
@ViewScoped
public class NewsAndAnnouncementAddUpdate implements Serializable {

    private String errorScript;
    private String field;

    //Constructor
    public NewsAndAnnouncementAddUpdate() {
         errorScript = "";
         ...
    } //end of constructor

    public String getErrorScript() {
        return errorScript;
    }

    public void setErrorScript(String errorScript) {
        this.errorScript = errorScript;
    }

}//end of class NewsAndAnnouncementAddUpdate

Когда пользователь нажимает кнопку сохранения, вызывается следующий метод и что-то помещается в переменную errorScript.При первой загрузке страницы ничего не происходит в переменной errorScript, поэтому ничего не происходит.Но когда пользователь нажимает кнопку «Сохранить», я проверяю, является ли любое обязательное поле пустым, и если да, то я генерирую скрипт ошибки, подобный следующему

public void checkForAddUpdate(ActionEvent event) {

    String result = validations();
    System.out.println(errorScript);
    if (result.equals("OK")) {
        System.out.println("Every Thinsg is fine");
    } else if (result.equalsIgnoreCase("error")) {
        return;
    }
    ...
} //end of checkForAddUpdate()

private String validations() {
    if (headline.trim().equals("")) {
        makeErrorScript("headline");          
        return "error";
    } else if (details.trim().equals("")) {
        ...
    } else {
        return "OK";
    }
} //end of validations()

private void makeErrorScript(String field){

    field = ConnectionUtil.getMessage("labels", field, null);
    String[] replace = {field};
    String message = ConnectionUtil.getMessage("messages_en_US", "emptyfield", replace);
    errorScript = ConnectionUtil.getErrorMessages(message);

} //end of makeErrorScript()

Я просто делаю сообщение.как Заголовок должен быть введен и передать это в качестве параметра getErrroMessage.Вот мой метод

public static String getErrorMessages(String errorParam) {

   errorParam = "\""+ errorParam + "\"";
   String myScript = "<script>"
           + "           $(document).ready(function(){"
           + "               $.dialog({ "
           + "                   message: " + errorParam +","
           + "                   imageIcon: false          ,"
           + "                   type: \"error\"           ,"
           + "                   okButtonID: \"ok\"        , "
           + "                   okButtonValue: \"OK\""
           + "               });"  //end of $.dialog()
           + "           });" //end of $(document).ready(fn)
           + "       </script>";

    return myScript;

} //end of getErrorMessages()

Теперь вы можете видеть, что когда пользователь впервые открывает страницу, переменная errorScript пуста, поэтому ничего не отображается, но при нажатии на кнопку сохранения, если обязательное поле отсутствуетзатем я создаю сценарий ошибки, этот сценарий помещается в переменную errorScript, которая заменяет значение h: outputText = "# {newsAndAnnouncementAddUpdate.errorScript}" escape = "false" и запускает сценарий, идиалог показан.до сих пор все работало нормально.

Но я только что заметил, что как только появляется диалоговое окно, а затем вы нажимаете кнопку обновления, а не вызываете конструктор (вы обновляете страницу, поэтому страница должна бытьзагрузить с нуля) он вызывает мой checkForAddUpdate (событие ActionEvent) .Здесь errorScript не пустой, поэтому он снова показывает сообщение.Логически, когда я обновляю страницу, должен вызываться конструктор, в конструкторе я использую errorSript = "";поэтому сообщение не будет отображаться при обновлении страницы.Почему он вызывает checkForAddUpdate (событие ActionEvent) , когда я обновляю страницу?Я хочу, чтобы, когда пользователь нажимал кнопку обновления, моя переменная errorScript должна была иметь вид empth ("") , поэтому диалог не отображается.Можно ли как-то обнаружить нажатие кнопки обновления браузера, а затем очистить переменную errorScript.У меня есть много типов ввода.или выберите переменные типа, я не работаю только с одним обязательным атрибутом.

На самом деле я не догадывался, что при нажатии кнопки сохранения, как я могу передать это сообщение моему сценарию, например, должен быть введен заголовок.Потому что я получаю сообщения из файла ресурсов JSF.Если я жестко закодировал значения для jQuery (JavaScript), то моя локализация произвела.Вот почему я так поступаю.

Но я хочу спросить, правильно ли я это делаю?Или есть лучший подход, который я могу использовать для генерации errorScript.Я должен использовать этот диалог.Означает, что мой скрипт должен быть вызван.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...