Вы можете очистить форму из метода 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}"/>
Я добавил фрагмент кода, как сбросить все значения для текущего ViewRoot рекурсивно для JSF 2 здесь: Сбросить все поля в форме
Это работает для представленных форм, показывающих ошибки проверки а также для вновь введенных значений в форме.
Вы можете сделать это с помощью 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('');});
Вы можете очистить свойство управляемого компонента, которое не должно быть перекрашено при рендеринге ответа. Это можно сделать, используя код, аналогичный приведенному ниже фрагменту:
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, текущее значение компонента используется для визуализации представления обратно пользователю. Если значение не будет изменено в событии приложения, значение всегда будет равно тому, которое применяется с запросом.
integer
, которое я должен очистить или установить на 0. И когда я адаптировал вышеуказанный метод, он все еще дает значение, которое я ввел ранее.
– Illep
8 August 2011 в 08:41
Integer
s и int
s могут быть сброшены до 0, если вы ссылаетесь на свойство управляемого компонента.
– Vineet Reynolds
8 August 2011 в 10:18