Olá,
Estou tentando fazer um simples formulário utilizando Spring, estou me baseando neste exemplo: http://static.springframework.org/docs/Spring-MVC-step-by-step/part4.html.
Pelo que entendi quando eu clico no botão para submeter o formulário é chamado o metodo onSubmit() do SimpleFormController, acontece que quando eu clico para submeter o meu formulário não acontece isso, ele chama o método validate() e referenceData() novamente e nao o onSubmit(). Não sei seestou fazendo algo errado, se alguem puder me ajudar agradeço muito!
Segue o código abaixo:
FormController:
public class CategoryFormController extends SimpleFormController {
/** Logger for this class and subclasses */
protected final Log logger = LogFactory.getLog(getClass());
private CategoryDAO categoryDAO;
@Override
protected ModelAndView onSubmit(Object command, BindException bindException) throws ServletException {
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> onSubit()");
Category category = (Category) command;
categoryDAO.insert(category);
logger.info("returning from PriceIncreaseForm view to " + getSuccessView());
return new ModelAndView(getSuccessView());
}
protected Object formBackingObject(HttpServletRequest request) throws ServletException {
Category category = new Category();
category.setName("Teste");
category.setCategory(this.categoryDAO.findByPK((long) 1));
return category;
}
@Override
protected Map<String, Object> referenceData(HttpServletRequest request) throws Exception {
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> referenceData()");
Map<String, Object> referenceData = new HashMap<String, Object>();
referenceData.put("categories", this.categoryDAO.findAll());
return referenceData;
}
public void setCategoryDAO(CategoryDAO categoryDAO) {
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> setCategory()");
this.categoryDAO = categoryDAO;
}
public CategoryDAO getCategoryDAO() {
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> getCategory()");
return categoryDAO;
}
}
formulário:
<h1><fmt:message key="category.heading"/></h1>
<form:form method="post" commandName="category">
<table width="95%" bgcolor="f8f8ff" border="0" cellspacing="0" cellpadding="5">
<tr>
<td align="right" width="20%"> <fmt:message key="category.label_name"/></td>
<td width="20%">
<form:input path="name"/>
</td>
<td width="60%">
<form:errors path="name" cssClass="error"/>
</td>
</tr>
<tr>
<td align="right" width="20%"> <fmt:message key="category.label_mae"/></td>
<td width="20%">
<form:select path="category">
<form:option value="" label=""/>
<form:options items="${categories}" itemValue="name" itemLabel="name"/>
</form:select>
</td>
</tr>
</table>
<br>
<input type="submit" name="Cadastrar" align="center" value="submit">
</form:form>
<a hello.htm"/>">Home</a>
servlet.xml
<bean name="/categoryForm.htm" class="com.braview.sbce.controller.CategoryFormController">
<property name="sessionForm" value="true"/>
<property name="commandName" value="category"/>
<property name="commandClass" value="com.braview.sbce.dataaccess.entity.Category"/>
<property name="validator">
<bean class="com.braview.sbce.validator.CategoryValidator"/>
</property>
<property name="formView" value="categoryForm"/>
<property name="successView" value="hello.htm"/>
<property name="categoryDAO" ref="categoryDAO"/>
</bean>
Gostaria de saber também pra que serve o método formBackingObject, pois não entendi claramente a sua função.
Obrigado!
