После отправки формы .jsp предыдущие данные перезагружаются после того, как форма снова будет доступна [дубликат]

  • Установите JDK 7.0.55 и установите Java для Eclipse для JDK 7.0.55.
  • Создайте проект с помощью JDK 7.0.55, настроив путь сборки JDK 7.0.55.
  • Установите компилятор в Eclipse для JDK 7.0.55 с помощью меню Windows -> Предпочтения -> Java -> Компилятор - выберите 1.7.
10
задан BalusC 23 April 2015 в 07:32
поделиться

5 ответов

Вы можете очистить форму из метода Bean, который вызывается при отправке формы; `

private String name;
    private String description;
    private BigDecimal price;

/*----------Properties ------------*/
/*-----Getter and Setter Methods---*/

public void save()throws SQLException{
String sql = "INSERT INTO tableName(name,description,price) VALUES (?,?,?)";
    Connection conn = ds.getConnection();
    try {

        PreparedStatement pstmt = conn.prepareStatement(sql);
        pstmt.setString(1, getName());
        pstmt.setString(2, getDescription());
        pstmt.setBigDecimal(3, getPrice());

        pstmt.executeUpdate();
    } catch (SQLException e) {
        e.getMessage();
        e.toString();
    }finally{
        conn.close();
        clear();
    }

}//End Save Method

public void clear(){
    setName(null);
    setDescription(null);
    setPrice(null);
}//end clear`

Обратите внимание, что метод clear () вызывается из метода сохранения после всех операций метод сохранения завершен. В качестве опции вы можете выполнить очистку только в том случае, если операция методов прошла успешно ... Метод, приведенный ниже, помещен в класс ProductController ...

    public String saveProduct(){
    try {
        product.save(); 
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return null;
}

Вызов метода из представления / jsp будет выглядеть как:

<h:commandButton value="Save" action="#{productController.saveProduct}"/>
4
ответ дан DJones 21 August 2018 в 22:56
поделиться
  • 1
    Спасибо за ваш ответ. ценить это – Illep 16 July 2012 в 16:43
  • 2
    Как именно этот ответ отличается от ответа Винеета? Этот ответ содержит только более неуместный шум. – BalusC 16 July 2012 в 17:10

Я добавил фрагмент кода, как сбросить все значения для текущего ViewRoot рекурсивно для JSF 2 здесь: Сбросить все поля в форме

Это работает для представленных форм, показывающих ошибки проверки а также для вновь введенных значений в форме.

11
ответ дан Community 21 August 2018 в 22:56
поделиться

Вы можете сделать это с помощью jQuery.

У меня была аналогичная проблема. Мне нужно было очистить форму всплывающего окна.

<rich:popupPanel id="newProjectDialog" autosized="true"
        header="Create new project">
        <h:form id="newProjectForm">
            <h:panelGrid columns="2">
                <h:outputText value="Project name:" />
                <h:inputText id="newProjectDialogProjectName"
                    value="#{userMain.newProject.projectName}"         required="true" />
                <h:outputText value="Project description:" />
                <h:inputText id="newProjectDialogProjectDescription"
                    value="#{userMain.newProject.projectDescription}"     required="true" />
            </h:panelGrid>
            <a4j:commandButton id="newProjectDialogSubmit" value="Submit"
                oncomplete="#{rich:component('newProjectDialog')}.hide();     return false;"
                render="projects" action="#{userMain.addNewProject}" />
            <a4j:commandButton id="newProjectDialogCancel" value="Cancel"
                onclick="#{rich:component('newProjectDialog')}.hide();     return false;" />
        </h:form>
        </rich:popupPanel>

Код jQuery:

$('#newProjectForm').children('input').on('click', function(){$('#newProjectForm').find('table').find('input').val('');});
3
ответ дан funbox 21 August 2018 в 22:56
поделиться

Вы можете очистить свойство управляемого компонента, которое не должно быть перекрашено при рендеринге ответа. Это можно сделать, используя код, аналогичный приведенному ниже фрагменту:

private String name;

public String getName(){return name;}
public void setName(String name){this.name=name};

public String submit()
{
    //do some processing
    ...
    // blank out the value of the name property
    name = null;
    // send the user back to the same page.
    return null;
}

. Причина текущего поведения может быть найдена в том, как обрабатываются процессы выполнения JSF. Все запросы JSF к просмотру обрабатываются в соответствии с стандартным запросом-ответом-ответами JSF lifecyle . В соответствии с lifecyle содержимое управляемого компонента обновляется со значением из запроса (т. Е. Устанавливается значение DataForm.Name) до выполнения события приложения (DataForm.submit). Когда страница отображается в фазе Render Response, текущее значение компонента используется для визуализации представления обратно пользователю. Если значение не будет изменено в событии приложения, значение всегда будет равно тому, которое применяется с запросом.

12
ответ дан Vineet Reynolds 21 August 2018 в 22:56
поделиться
  • 1
    Существует значение integer, которое я должен очистить или установить на 0. И когда я адаптировал вышеуказанный метод, он все еще дает значение, которое я ввел ранее. – Illep 8 August 2011 в 08:41
  • 2
    Возможно, вы сбросите значение локальной переменной. Integer s и int s могут быть сброшены до 0, если вы ссылаетесь на свойство управляемого компонента. – Vineet Reynolds 8 August 2011 в 10:18
11
ответ дан Community 4 November 2018 в 20:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: